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
相关产品推荐
相关产品推荐

