AngularJS 指令 - 指定回调的默认值
AngularJS Directives - specify defaults for callbacks
我有一个指令将一些方法作为回调。所有这些都需要属性才能工作。
scope: {
onEventOne: '&?',
onEventTwo: '&?'
}
function someWork() {
onEventOne()(myVar);
onEventTwo()(myOtherVar);
}
我的问题是当我没有定义其中一些回调时,因为它们并非都是必需的。
<div>
<myDirective on-event-one="customHandler"></myDirective>
</div>
在上面的代码中,当调用 onEventOne()(myVar);
时一切正常,但是当调用 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
。
如何设置这些默认功能?
使用您的函数意味着 blankHandler
必须 return 多一个 "blank" 函数(angular.noop
在这里很方便)。在你的情况下,这就是我在 link 函数中要做的事情:
var blankHandler = function() {
return angular.noop;
};
if (!attrs.onEventOne) {scope.onEventOne = blankHandler;}
if (!attrs.onEventTwo) {scope.onEventTwo = blankHandler;}
scope.onEventOne()(myVar);
scope.onEventTwo()(myOtherVar);
我有一个指令将一些方法作为回调。所有这些都需要属性才能工作。
scope: {
onEventOne: '&?',
onEventTwo: '&?'
}
function someWork() {
onEventOne()(myVar);
onEventTwo()(myOtherVar);
}
我的问题是当我没有定义其中一些回调时,因为它们并非都是必需的。
<div>
<myDirective on-event-one="customHandler"></myDirective>
</div>
在上面的代码中,当调用 onEventOne()(myVar);
时一切正常,但是当调用 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
。
如何设置这些默认功能?
使用您的函数意味着 blankHandler
必须 return 多一个 "blank" 函数(angular.noop
在这里很方便)。在你的情况下,这就是我在 link 函数中要做的事情:
var blankHandler = function() {
return angular.noop;
};
if (!attrs.onEventOne) {scope.onEventOne = blankHandler;}
if (!attrs.onEventTwo) {scope.onEventTwo = blankHandler;}
scope.onEventOne()(myVar);
scope.onEventTwo()(myOtherVar);