【发布时间】:2016-03-13 05:14:40
【问题描述】:
我在指令和控制器之间有一个双向绑定变量publish.selected_tags。
我在控制器中的该变量上保留了$watch:
$scope.$watch('publish.selected_tags', function(new_val, old_val) {
console.log(new_val); //print new value
})
我面临的问题是当我将一个项目推入selected_tags 列表时,$watch 不会被触发:
return {
scope: {
selected_tags: '='
},
link: function(scope, element, attrs) {
scope.selected_tags.push('item') //watch in the controller not getting fired
}
}
但是,当我将selected_tags 分配给一个数组时,控制器中的$watch 会被触发:
return {
scope: {
selected_tags: '='
},
link: function(scope, element, attrs) {
scope.selected_tags = ['item'] //watch in the controller getting fired!
}
}
为什么会这样?在我想推送一个元素的情况下,如何让我的$watch 触发?
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-watch