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
變化!
有人可以解釋爲什麼嗎?以及如何在不改變設計的情況下修復此問題?
「'ng-class ='{disabled:isDisabled()}'綁定在開始時被初始化一次」 - 什麼使得您認爲這甚至發生? –
我建議把你的代碼放入jsfiddle或plunker中。它將幫助你和我們找出發生了什麼問題。 –