我创建了一个接受回调作为属性的指令,例如:
<my-directive callback-expression="someFunction()"> </my-directive>
该指令是可重用的,因此我给了它一个隔离范围。我想根据是否callback-expression
设置了该属性在指令中显示一个按钮。
App.directive('myDirective', function(){
restrict: 'E',
scope: {
callbackExpression: '&'
},
template: '<button ng-show="!!callbackExpression">Fire callback</button>'
});
问题是,即使表达式为空,它也是一个函数:
console.log($scope.callbackExpression)
具有空白属性会导致:
function (locals) {
return parentGet(parentScope, locals);
}
我目前的解决方案是在我的链接功能的顶部有这一行:
if (attributes.callbackExpression) scope.callbackButton = true
然后ng-show
上callbackButton
是否有任何替代方案不需要额外的线和范围属性?