我有一个指令,它采用一些方法作为回调。所有这些都需要属性才能工作。
scope: {
onEventOne: '&?',
onEventTwo: '&?'
}
function someWork() {
onEventOne()(myVar);
onEventTwo()(myOtherVar);
}
我的问题是当我没有定义一些回调时,因为它们并非都是必需的。
<div>
<myDirective on-event-one="customHandler"></myDirective>
</div>
在上面的代码中,当调用onEventOne()(myVar);
everuthing有效时,但在调用onEventTwo()(myOtherVar);
时,我得到TypeError: undefined is not a function
。
我尝试使用link函数将空白函数设置为默认值,
function linkFunction(scope, element, attrs) {
if (!attrs.onEventOne) {scope.onEventOne = scope.blankHandler;}
if (!attrs.onEventTwo) {scope.onEventTwo = scope.blankHandler;}
}
但是这会导致在抛出TypeError: undefined is not a function
时调用默认函数。
如何设置这些默认功能?
答案 0 :(得分:3)
您的功能的使用意味着blankHandler
必须再返回一个&#34;空白&#34;函数(angular.noop
在这里很方便)。这就是我在你的情况下在链接功能中所做的事情:
var blankHandler = function() {
return angular.noop;
};
if (!attrs.onEventOne) {scope.onEventOne = blankHandler;}
if (!attrs.onEventTwo) {scope.onEventTwo = blankHandler;}
scope.onEventOne()(myVar);
scope.onEventTwo()(myOtherVar);