在我的指令中,我使用表达式:
return {
restrict: 'E',
scope: {
func: "&?"
},
controller: 'directiveCtrl',
controllerAs: 'vm',
bindToController: true
}
function directiveCtrl() {
var vm = this;
vm.isFunc = angular.isDefined(vm.func) || false;
}
如何检查是否定义了func
?现在它总是被定义:/
<my-directive></my-directive>
<my-directive func='myFunc()'></my-directive>
答案 0 :(得分:2)
您可以在指令的链接功能中执行以下操作:
return{
restrict: 'E',
scope: {
func: "&?"
},
controller: 'directiveCtrl',
controllerAs: 'vm',
bindToController: true,
link:function(scope,element,attrs){
if(attrs.func) {
attrs.$observe('func', function(value) {
console.log(value);
});
}
}
答案 1 :(得分:0)
我认为这应该有效:
function directiveCtrl($scope) {
var vm = this;
vm.isFunc = angular.isDefined($scope.func) || false;
}