2014-01-28 86 views

回答

2

地說,你需要控制器被通知從一個組成部分的變化是不是真的去思考的正確方法到底是怎麼回事。

在控制器中,某些類型的數據模型使用控制器的當前$範圍表示並投影到視圖中。當DOM元素(我從你的術語中假設的組件)想要更新控制器提供的模型時,該模型通過指令(通常是ng模型)綁定到組件。當該組件更改模型時,由於該指令和數據綁定,數據會自動更新。

+0

正確 - 下一步是讓控制器知道模型已更新。什麼是標準的做法呢? – schellsan

+1

如果你的意思是根據範圍值的變化觸發一些其他的動作,那麼在這個值上加上一個監視就會觸發一個新的和舊值的回調,比如@marfarma顯示的。 – BoxerBucks

+0

dart docs for angular $ watch:http://ci.angularjs.org/view/Dart/job/angular.dart-master/javadoc/angular.core/Scope.html#$watch – schellsan

2

docs

//$scope.$watch(<function/expression>, <handler>); 

$scope.$watch('foo', function(newVal, oldVal) { 
    console.log(newVal, oldVal); 
}); 

也感興趣的:

$scope.$on() 
$scope.$emit() 
$scope.$broadcase() 
$scopt.$watchCollection() 
+0

這是否與Dart中的角度相同? – schellsan

+1

非常相似。 AngularDart使用控制器的設置器設置更改值通常不會使用範圍。但你列出的東西是可用的。 –

+0

@GünterZöchbauer,我在嘗試自己解決這個問題時遇到了問題,我正在使用StreamController將更新從組件推送到控制器。在實例化時,流已訂閱,但在事件發生時(更新)流沒有訂閱者,但我的代碼沒有刪除訂閱。我覺得這是角魔術。對此有何見解? – schellsan

相關問題