在指令中,您通过arg设置方法回调,例如:
<my-directive callback='showAlert()' />
您可以通过返回中的范围设置检索变量:
scope: {
callback: "&callback"
}
如果未设置回调,例如:
<my-directive />
$ scope.callback的值仍为:
$scope.callback():function (locals) {
return parentGet(scope, locals);
}
有没有一种好方法可以检查回调是否未设置?
答案 0 :(得分:10)
我能想到的一种方法是检查指令名称的属性参数,如
link: function (scope, elm, attrs) {
if(attrs.callback) {
//this attribute has been defined.
}
}
答案 1 :(得分:9)
您可以使用watch -n 5 'ls -l | grep "txt"'
的{{1}} insteand。如果没有提供,它将使$ scope.callback等于&?
。
答案 2 :(得分:1)
因为传递给指令的参数将驻留在指令的作用域上,所以我更愿意检查类型。甚至认为它被定义为范围配置中的表达式:
scope: { callback: '&attrName' },
link: function(scope, ...){
if (typeof scope.callback === 'function') {
// do my stuff
}
}
这样我总能确定我得到了我期望的东西。
答案 3 :(得分:1)
这种方法对我有用:
scope: {
callback: '&callback',
callbackExists: '@callback'
}
然后使用模板中的第二个参数:
<div ng-if="callbackExists">…</div>
答案 4 :(得分:0)
使用angular.isUndefined
检查callback
功能
link: function(scope, element, attrs) {
if (angular.isUndefined(scope.callback)) {
// do something when callback undefined
return;
}
// do something when callback defined
}