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
如果我想推动一个元素,我怎样才能让我开火?