2014-06-25 51 views
0

我要嵌套兩個指令和inner directive具有綁定到需要從內部和外部作用域一個範圍屬性,並返回一個布爾ngClass結合不經由指令通信更新

的功能的ng-class這是HTML:

<ul my-toolbar disabled-when="myCtrl.isProcessing" > 
    <li my-action-button action="myCtrl.action()" disable-when="myCtrl.isSad()" /> 
</ul> 

這是我的外部指令:

myApp.directive("myToolbar", function() { 
    return { 
    restrict: 'A', 
    scope: { 
     disabled: '=disabledWhen' 
    }, 
    transclude: true, 
    controller: function($scope) { 
     this.isDisabled = function() { 
     return $scope.disabled; 
     } 
    } 
    }; 
}); 

這是我內心的指令:

myApp.directive("myActionButton", function() { 
    return { 
    restrict: 'A', 
    scope: { 
     action: '&', 
     disabled: '=disabledWhen' 
    }, 
    replace: true, 
    template: "<li ng-class='{disabled: isDisabled()}'><a ng-click='isDisabled() || action()' /></li>", 
    link: function(scope, elem, attrs, toolbarCtrl) { 
     scope.isDisabled = function() { 
      return toolbarCtrl.isDisabled() || scope.disabled; 
     }; 
    } 
    }; 
}); 

現在的問題是,ng-class='{disabled: isDisabled()}'綁定在一開始被初始化一次,但沒有更新時myCtrl.isProcessing變化!

有人可以解釋爲什麼嗎?以及如何在不改變設計的情況下修復此問題?

+0

「'ng-class ='{disabled:isDisabled()}'綁定在開始時被初始化一次」 - 什麼使得您認爲這甚至發生? –

+0

我建議把你的代碼放入jsfiddle或plunker中。它將幫助你和我們找出發生了什麼問題。 –

回答