【发布时间】:2014-11-13 20:06:21
【问题描述】:
我有一个指令与它的控制器共享数据,我正在使用隔离范围。
但是,当我从指令内部更新数据时,指令和控制器都不会使用 $watch 看到数据更改。
这是我正在尝试做的一个示例:
var app = angular.module('myApp', []);
app.controller('myAppCtrl', function($scope) {
$scope.buttonSettings = {
val: 0
}
$scope.$watch('buttonSettings.val', function(val) {
console.log('watchInController')
console.log(val)
});
});
app.directive('buttonTest', function() {
return {
restrict: 'E',
scope: {
buttonSettings: '='
},
template: '<button>{{buttonSettings.val}}</button>',
link: function(scope) {
var button = $('button');
console.log(scope.buttonSettings)
scope.$watch('buttonSettings.val', function(val) {
console.log('watchInDirective')
console.log(val)
});
button.bind('mouseover', function() {
scope.buttonSettings.val++;
console.log('mouseover')
console.log(scope.buttonSettings.val)
})
}
}
});
这是 plunkr 中的完整示例:http://plnkr.co/edit/lnztoMhtU03Qzl0BaMpk?p=preview
我做错了什么?
【问题讨论】:
标签: angularjs angularjs-directive angularjs-scope