我有一个具有以下范围的指令:
scope: {
copyObject: '&',
deleteObject: '&'
}
现在,我的模板中有一个相应的按钮,如下所示:
<button ng-click="copyObject()">Copy</button>
但是,如果copy-object
没有应用任何功能,我想隐藏按钮,例如:
<!-- Should show the copy button -->
<my-directive copy-object="copyObject()"></my-directive>
<!-- Should not show the copy button -->
<my-directive></my-directive>
所以我将以下内容应用到我的模板中:
<button ng-click="copyObject()" ng-if="copyObject">Copy</button>
但这似乎不起作用,如果我检查指令真正的隔离范围,我注意到,即使未输入属性,该功能仍然存在,因此按钮始终可见。
是否可以检测函数是否绑定到copyObject()
?这样做是一种好习惯吗?我不确定该指令是否应该知道绑定函数,或者这是某种范围访问冲突?
示例:http://jsfiddle.net/azchpo5q/(第二个按钮不应该是可见的,因为没有绑定任何操作)。
答案 0 :(得分:2)
您可以使用ng-if
中的函数来确定函数是否已定义。
<button ng-click="copyObject()" ng-if="doShowCopy()">Copy</button>
然后定义此方法:
$scope.doShowCopy = function() {
return (typeof $scope.copyObject == 'function');
}