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 ){ .... }
}
}
请帮我解决这一点。
我有一个使用“& 绑定”的 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 ){ .... }
}
}