所有代码http://jsfiddle.net/mato75/o9e3cb56/
指令:
scope: { attrs: '=?' }
main ctrl:
this.val = { val: '1', title: '2' };
$scope.$watch(angular.bind(this, function () { return this.val.title }), function () {
doSomethingOnChange()
});
HTML:
<div dirc x-attrs="ctrl.val">
当我在指令中更改标题时,不会调度主控制器监视。
答案 0 :(得分:1)
以下是我认为您打算执行的示例:http://plnkr.co/edit/pRih6ldttukJ9ZwrWNsF?p=preview
我想知道为什么要使用这种设置$ watch的方法:
$scope.$watch(angular.bind(this, function () { this.val.title }), function () {
doSomethingOnChange()
});
在我的代码中,我使用了更简单的格式:
$scope.$watch('ctrl.val.title', function() {
console.log('The watch was dispatched!');
});
当然,在这种情况下,您将控制器耦合到您在视图中选择的名称。也许这就是你想避免的?在任何情况下,演示都有效,所以我希望有所帮助。
更新:我实际上刚刚意识到您的代码无效的真正的原因。在$ watch函数中,您忘记了return
语句:
$scope.$watch(angular.bind(this, function () { return this.val.title }), function () {
doSomethingOnChange()
});
现在应该可以了。