我有一个指令接受一些方法作为回调。所有这些都需要属性才能工作。
scope: {
onEventOne: '&?',
onEventTwo: '&?'
}
function someWork() {
onEventOne()(myVar);
onEventTwo()(myOtherVar);
}
我的问题是当我没有定义其中一些回调时,因为它们并非都是必需的。
<div>
<myDirective on-event-one="customHandler"></myDirective>
</div>
在上面的代码中,当调用 onEventOne()(myVar);
时一切正常,但是当调用 onEventTwo()(myOtherVar);
时我得到 TypeError : undefined 不是函数
。
我尝试使用链接函数将空白函数设置为默认值,
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
。
如何设置这些默认功能?
最佳答案
函数的使用意味着 blankHandler
必须返回一个“空白”函数(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);
关于javascript - AngularJS 指令 - 指定回调的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584504/