检查指令中的表达式是否已定义?

时间:2015-06-23 09:40:04

标签: angularjs

在我的指令中,我使用表达式:

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>

2 个答案:

答案 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;
}