You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS指令参数类型定义:&绑定与ngdoc@param标注疑问

AngularJS指令参数的JSDoc/ngDoc类型标注指南

针对你提出的AngularJS指令参数类型标注问题,结合示例里的scope绑定类型,直接给你明确的答案:

1. &绑定的参数类型(parentContextExpression)

当使用&绑定父作用域的表达式时,指令作用域中对应的属性是一个可调用的函数,用来执行父作用域中的表达式。在ngDoc/JSDoc里,你可以标注为:

@param {function} parentContextExpression

或者更贴合Angular官方文档的习惯,用Expression类型来强调它是父作用域的表达式引用:

@param {Expression} parentContextExpression

这个参数对应模板中传入的表达式(比如示例里的externalFn()),在指令内部你可以通过scope.parentContextExpression()来触发执行。

2. @绑定的参数类型(oneWayParameter)

@是单向字符串插值绑定,最终传递到指令作用域的是字符串类型的值(哪怕父作用域里是数字或布尔值,也会被自动转为字符串)。所以这里的类型标注应该是:

@param {string} oneWayParameter

如果这个参数是可选的,可以加上=后缀,写成{string=},和示例里twoWayParameter的格式保持一致。

完整修正后的示例代码

angular.module('app', [])
 .directive('exampleDir', exampleDir);
/**
 * @ngdoc directive
 * @module app
 * @name app.directive:exampleDir
 * @param {function} parentContextExpression - 绑定父作用域的可执行表达式,调用时会触发父作用域中的函数/表达式
 * @param {string} oneWayParameter - 单向绑定的字符串值,来自父作用域的插值结果
 * @param {Object=} twoWayParameter - 双向绑定的对象,可与父作用域同步更新
 * @usage
 * <example-dir
 * parent-context-expression="externalFn()"
 * one-way-parameter="parentScopeVariable"
 * two-way-parameter="parentScopeObject"
 * ></example-dir>
 **/
function exampleDir() {
 return {
 template: '...',
 scope: {
 parentContextExpression: '&',
 oneWayParameter: '@',
 twoWayParameter: '='
 }
 }
}

补充说明:

  • &绑定的本质是把父作用域的表达式包装成函数,标注function最贴合指令内部的使用场景;
  • @绑定的结果永远是字符串,所以string是最准确的类型;
  • 类型后加=表示该参数为可选参数。

内容的提问来源于stack exchange,提问作者eustatos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:02:43