LIVE DEMOAngularJS指令:爲什麼觀察者沒有被觸發?
考慮以下兩條指令:
JS:
angular.module("Directives", []).directive("action", function($compile) {
return {
restrict: 'A',
scope: {
action: '='
},
link: function(scope, element) {
scope.showDialog = false;
var template = "<span dialog='showDialog'>Dialog</span>";
element.append($compile(template)(scope)).on('click', function() {
console.log("Setting showDialog to true");
scope.showDialog = true;
});
}
};
}).directive("dialog", function() {
return {
restrict: 'A',
scope: {
dialog: '='
},
link: function(scope, element) {
element.hide();
scope.$watch('dialog', function(newValue) {
console.log("dialog changed to " + newValue); // Not called on button click
});
}
};
});
HTML:
<button action>Click Here</button>
你能解釋一下爲什麼設置action
的showDialog
不會觸發dialog
「看守人?
其實,當你點擊按鈕 - 指令'對話'中的'對話'不會改變 - 看起來不是綁定正確 - 也許是因爲$ compile中的作用域與action-> link中的作用域不同?但我不知道如何解決這個問題。 –