LIVE DEMOДирективы AngularJS: Почему наблюдатель не запускается?
Учитывая следующие две директивы:
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
' наблюдатель?
На самом деле, при нажатии на кнопку - «диалог» в диалоге «директива» не меняется - похоже, что это не правильно привязан - может быть, потому что область в компиляции $ не совпадает с областью действия в action-> link? Но я не знаю, как это исправить. –