簡體   English   中英

angularjs $ watch無法檢測到對象中的Property變化

[英]angularjs $watch cannot detect change of Property in an object

我正在為$scope對象設置watch,除非整個值都被更改,否則不會觸發$watch change事件

范例:

//Some where in .run function i set rootScope and set $watch too.
$rootScope.config = {date:'11/4/2015',moreValues:'etc'};

//setting $watch
$rootScope.$watch('config',function(new,old) {
console.log('config value changed :)',new);
});

//----->Inside Controller----------

//NOw THIS WILL NOT TRIGGER $watch
$rootScope.config.date = 'another day';

//Same as this, it will also not trigger $watch
var temp = $rootScope.config;
temp.date = 'another day';
$rootScope.config = temp;

//YET THIS WILL WORK JUST FINE :) AND WILL TRIGGER $watch
var temp = angular.copy($rootScope.config);
temp.date = 'another day';
$rootScope.config = temp;

有人可以告訴我為什么會這樣嗎? 有沒有更好的方法來觸發$watch對象屬性的更改?

您可以使用$ watchCollection或將第三個參數傳遞為true

$rootScope.$watch('config',function(value,old) {
console.log('config value changed :)',value);
}, true);

要么

$rootScope.$watchCollection('config',function(value,old) {
console.log('config value changed :)',value);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM