AngularJS指令 - 指定回调的默认值

时间:2015-02-18 13:12:20

标签: javascript angularjs angularjs-directive callback default

我有一个指令,它采用一些方法作为回调。所有这些都需要属性才能工作。

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时调用默认函数。

如何设置这些默认功能?

1 个答案:

答案 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);