Angular 1.5组件检查'&结合'一片空白

时间:2016-11-29 16:52:23

标签: angularjs angular-components

请在这一点上帮助我。

我有一个角度为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!
       }
    }
});

我想测一下是否有关于某事的内容&#39;是定义。

事实上,如果我以这种方式使用它:

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

一切都好。

但如果我以这种方式使用它:

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

&#39; onSomething&#39;不应该定义,但我无法检查它!

我试过了:

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

所有这些测试总是返回&#39; true&#39;,即使回调尚未通过。

1 个答案:

答案 0 :(得分:3)

它们返回true因为ctrl.onSomething是一个钩子函数,用于启动在组件实例中声明的回调。它总是 truthy 。相反,尝试将$attrs注入控制器并对其进行无效检查。

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