Angular 1.5 组件检查'&绑定'是否为空

Angular 1.5 component check '& binding' is null

请帮我解决这一点。

我有一个使用“& 绑定”的 angular 1.5 组件:

app.component('foo', {
    bindings: {
       message: '<'
       onSomething: '&'
    },
    template:'<div>blah blah</div>',
    controller: function () {
       var ctrl = this;
       ctrl.myOperation = function () {
           ctrl.onSomething();   // <= look this!
       }
    }
});

我想测试是否定义了 'onSomething'。

其实我这样使用的话:

<foo message='my message' on-something='doSomething()'></foo>

一切正常

但是如果我这样使用它:

<foo message='my message'></foo>

'onSomething' 不应该被定义,但是我无法检查它!

我试过了:

if (ctrl.onSomething) ...
if (ctrl.onSomething == undefined) ...
if (ctrl.onSomething == null) ...
if (angular.isDefined(ctrl.onSomething)

所有这些测试总是return 'true',即使回调还没有通过。

他们 return true 因为 ctrl.onSomething 是一个钩子函数,用于启动组件实例中声明的回调。它永远是真实的。相反,请尝试将 $attrs 注入您的控制器并对其进行空检查。

function( $attrs ){
    var ctrl = this;
    ctrl.myOperation = function(){
        if( $attrs.onSomething ){ .... }
    }
}