Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS指令-指定回调的默认值_Javascript_Angularjs_Angularjs Directive_Callback_Default - Fatal编程技术网

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

Javascript AngularJS指令-指定回调的默认值,javascript,angularjs,angularjs-directive,callback,default,Javascript,Angularjs,Angularjs Directive,Callback,Default,我有一个指令,它将一些方法作为回调。所有这些都需要属性才能工作 scope: { onEventOne: '&?', onEventTwo: '&?' } function someWork() { onEventOne()(myVar); onEventTwo()(myOtherVar); } 我的问题是当我没有定义一些回调时,因为它们不是全部必需的 <div> <myDirective on-event-one="

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

scope: {
    onEventOne: '&?',
    onEventTwo: '&?'
}

function someWork() {
    onEventOne()(myVar);
    onEventTwo()(myOtherVar);
}
我的问题是当我没有定义一些回调时,因为它们不是全部必需的

<div>
    <myDirective on-event-one="customHandler"></myDirective>
</div>
但这会导致调用默认函数时仍抛出
TypeError:undefined不是函数


如何设置这些默认函数?

函数的使用意味着
blankHandler
必须再返回一个“空白”函数(
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);
var blankHandler = function() {
    return angular.noop;
};

if (!attrs.onEventOne) {scope.onEventOne = blankHandler;}
if (!attrs.onEventTwo) {scope.onEventTwo = blankHandler;}

scope.onEventOne()(myVar);
scope.onEventTwo()(myOtherVar);