在knockoutJS可以訂閱一個observable視圖模型性質的改變,例如,如:訂閱屬性更改
myViewModel.personName.subscribe(function(newValue) {
alert("The person's new name is " + newValue);
});
目前我正在學習AngularJS,我在想,如果有一個相當於這在AngularJS中?我試圖尋找這個,但沒有任何運氣。
在knockoutJS可以訂閱一個observable視圖模型性質的改變,例如,如:訂閱屬性更改
myViewModel.personName.subscribe(function(newValue) {
alert("The person's new name is " + newValue);
});
目前我正在學習AngularJS,我在想,如果有一個相當於這在AngularJS中?我試圖尋找這個,但沒有任何運氣。
的scope對象在AngularJS有一個稱爲$watch
關於 '觀看' 範圍屬性特殊方法。
它接受接收新模型的舊值的回調:
$scope.$watch('modelName', function(newValue, oldValue){
// Do anything you like here
});
回調是在初始化和每次模式的轉變。因此,它有良好的可添加額外的檢查平等這樣的:
$scope.$watch('modelName', function(newValue, oldValue){
// Check if value has changes
if(newValue === oldValue){
return;
}
// Do anything you like here
});
這允許你「看」你的模型,並根據需要執行一些動作。一個額外的評論:如果你正在看一個包含一個對象的模型,你應該使用額外的第三個參數,告訴AngularJS通過對象相等而不是通過引用比較這兩個值(因爲參考不會改變,因此不觸發觀察者)是這樣的:
$scope.$watch('modelName', function(newValue, oldValue){
// Do anything you like here
}, true); // Add extra 'true' parameter to check for object equality
您可以在AngularJS scope頁面上閱讀更多的文檔。
希望有幫助!
您可以使用$ watch檢查某個範圍對象的屬性何時更改。
對於API的調用,並通過用戶操作或應用程序事件觸發的異步數據,你關閉你的控制器在服務功能的回調使用
$rootScope.$broadcast('updateSearch', value);
直接利用它像好:
$scope.$on('updateSearch', function(event,value) {
$scope.search = value;
});
這是observables將在Angular2中的工作原理https://ngforms.firebaseapp.com/#/43 – Failpunk