我在其中一個控制器中的父範圍中聲明瞭一個變量。AngularJS - 在自定義指令中更新變量
$ scope.myValue = true;
該值很容易在自定義指令中提取。但是,當父控制器中的值更新時,它不會反映在自定義指令中。
我的問題是我們如何讓指令知道「myValue」被改變了?
如果信息不夠,請讓我知道。
我在其中一個控制器中的父範圍中聲明瞭一個變量。AngularJS - 在自定義指令中更新變量
$ scope.myValue = true;
該值很容易在自定義指令中提取。但是,當父控制器中的值更新時,它不會反映在自定義指令中。
我的問題是我們如何讓指令知道「myValue」被改變了?
如果信息不夠,請讓我知道。
在你父控制器,在改變變量的值,你可以播放這樣的一個事件 -
$scope.$broadcast('valueChanged', {
val: $scope.myValue // pass in any object you want
});
然後在你的孩子的控制器,處理它喜歡 -
$scope.$on('valueChanged', function (event, data) {
console.log(data); // get the same object here
});
$broadcast
引發事件,所以這應該適用於你的情況。
,您可以觀看指令裏面的值,就像這樣:
app.directive('directive', function() {
return {
scope: true,
link: function($scope){
$scope.$watch('$parent.myValue', function(newVal){
console.log(newVal);
});
}
};
});
非常感謝您的熱心幫助.. :) – 2015-03-31 11:34:34
創建一個服務,這個變量添加到服務,注入這種服務到控制器以及指令並且你去 – 2015-03-31 10:56:53
難道你不能在指令裏面觀察它嗎? – 2015-03-31 10:57:27
@SergiuParaschiv嘗試了$ watch。但它只被調用一次。即,視圖加載時。 – 2015-03-31 10:58:42