渡された値がtrueの場合に実行されるシンプルなディレクティブをテストしようとしましたが、一度しか動作しません。angleディレクティブ、ブール値付き双方向データバインディングは一度だけ実行されます
ディレクティブ:
.directive('myDirective', function(){
return {
restrict: 'A',
scope: {
triggerObj: '@myDirective'
},
link: function (scope, elem, attrs) {
scope.$watch('triggerObj', function() {
alert('success')
});
}
};
})
コントローラ:
$scope.triggerObj = {};
$scope.triggerObj.trigger = false;
$scope.passValue = function(){
//set to true
$scope.triggerObj.trigger = true;
}
ビュー:
<div my-directive='{[triggerObj.trigger]}'>
<button type='button' ng-click='passValue()'>click</button>
もtrueに設定する前に、値をfalseにリセットしようとしたが、まだそれは一度だけ動作します。
あなたtriggerObjは= triggerObj –
との代わりに@triggerObjの結合を試みが、その場合には、ブラケットをビューから削除する必要があるが、結果は私が$ scope.triggerObjを入れてみました同じ – user1751287