2015-03-31 82 views
0

我在其中一個控制器中的父範圍中聲明瞭一個變量。AngularJS - 在自定義指令中更新變量

$ scope.myValue = true;

該值很容易在自定義指令中提取。但是,當父控制器中的值更新時,它不會反映在自定義指令中。

我的問題是我們如何讓指令知道「myValue」被改變了?

如果信息不夠,請讓我知道。

+1

創建一個服務,這個變量添加到服務,注入這種服務到控制器以及指令並且你去 – 2015-03-31 10:56:53

+1

難道你不能在指令裏面觀察它嗎? – 2015-03-31 10:57:27

+0

@SergiuParaschiv嘗試了$ watch。但它只被調用一次。即,視圖加載時。 – 2015-03-31 10:58:42

回答

1

在你父控制器,在改變變量的值,你可以播放這樣的一個事件 -

$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引發事件,所以這應該適用於你的情況。

1

,您可以觀看指令裏面的值,就像這樣:

app.directive('directive', function() { 
    return { 
     scope: true, 
     link: function($scope){ 
      $scope.$watch('$parent.myValue', function(newVal){ 
       console.log(newVal); 
      }); 
     } 
    }; 
}); 

鏈接演示:https://jsfiddle.net/mzrja04L/

+0

非常感謝您的熱心幫助.. :) – 2015-03-31 11:34:34