1

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要素をプッシュしたい場合、どのように発火させることができますか?

4

3 に答える 3