AngularJS检查指令中是否存在函数

时间:2014-10-29 10:45:41

标签: javascript angularjs

我有一个具有以下范围的指令:

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/(第二个按钮不应该是可见的,因为没有绑定任何操作)。

1 个答案:

答案 0 :(得分:2)

您可以使用ng-if中的函数来确定函数是否已定义。

<button ng-click="copyObject()" ng-if="doShowCopy()">Copy</button>

然后定义此方法:

 $scope.doShowCopy = function() {
     return (typeof $scope.copyObject == 'function');
 }