如何在angularjs中为指令定义参数类型?
&
绑定要使用什么类型?
请参阅示例代码中的ngdoc或jsdoc。
UPD: 我的目标是获取以下问题的答案
* @param {<< what to write here? >>} parentContextExpression
* @param {<< what to write here? >>} oneWayParameter
angular.module('app', [])
.directive('exampleDir', exampleDir);
/**
* @ngdoc directive
* @module app
* @name app.directive:exampleDir
* @param {<< what to write here? >>} parentContextExpression
* @param {<< what to write here? >>} 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: '="
}
}
}
答案 0 :(得分:0)
如果您查看Angular Material代码,就会看到此答案的来源。
这是一个简化的版本,看起来更像问题中的源代码。
/**
* @ngdoc directive
* @name exampleDir
*
* @param {string} one-way-parameter A One way.
* @param {expression=} parent-context-expression An Expression
*/
function ExampleDir() {
return {
restrict: 'E',
scope: {
oneWayParameter: '@?oneWayParameter',
parentContextExpression: '=?parentContextExpression'
},
}
根据我使用Closure Compiler的经验(它与JSDoc不同,也不是ngDoc):
scope
的类型为{Object<string>}
。
在控制器的scope
上运行$onInit
之前,class
参数的值不存在,因此它们在构造函数中必须为空。您可以提供这样的类型;
class SomeCtrl {
constructor() {
/** @type {?boolean} */
this.oneWayParameter;
}
$onInit() {
this.oneWayParameter = 'this is not a boolean';
}
}
在此示例中,this.oneWayParameter = 'this is not a boolean';
在Closure中引发错误,因为该属性需要一个布尔值,但是会找到一个字符串。