2015-06-23 3 views
0

В моей директиве я использую выражение:Проверьте, определено ли выражение в директиве?

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

Вы можете сделать это в функции связи директивы, как показано ниже:

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); 
     }); 
     } 
    } 
+0

Это работает - спасибо Я использую 'link: function (scope, element, attrs) {if (attrs.func) {scope.vm.isFunc = true;}}' – piernik

0

Я думаю, что это должно работать:

function directiveCtrl($scope) { 
    var vm = this; 
    vm.isFunc = angular.isDefined($scope.func) || false; 
} 
+0

Я нехорошо - он выполняет funcion – piernik

+0

Да, круглые скобки были ошибка. Но мое решение работает с контроллером –

Смежные вопросы