如果对象不存在,此语法或逻辑是否会在Angular.js中出错?我不断得到TypeError: Cannot read property 'timestamp' of undefined
。但是我在chrome调试器中验证了其中至少有一个存在,例如sseHandler.result.httpPortResult.timestamp
。
$scope.$watch(function(){
return sseHandler.result.cpuResult.timestamp ||
sseHandler.result.networkResult.timestamp ||
sseHandler.result.httpPortResult.timestamp;
}, function(){
if (sseHandler.result.cpuResult) {
console.log("yes");
cpuUpdate(sseHandler.result);
}
});
}]);
最佳答案
只需执行$scope.$watchCollection(sseHandler.result, function() { });
可能会更容易,但是我不确定这是否满足您的需求,因为它将对sseHandler.result进行任何更改,而不仅仅是时间戳。
否则,您需要检查属性是否存在,并且我怀疑您现在拥有它的方式是否会在networkResult上进行更改,就像cpuResult尚未更改一样,它将返回该更改,而angular将认为没有任何更改。所以我可能会这样做:
$scope.$watch(function(){
var ret = '';
if (sseHandler.result.cpuResult)
ret += sseHandler.result.cpuResult.timestamp;
if (sseHandler.result.networkResult)
ret += sseHandler.result.networkResult.timestamp;
if (sseHandler.result.httpPortResult)
ret += sseHandler.result.httpPortResult.timestamp;
return ret;
}, function() {});