我有一个看起来像
的控制器.controller('GraphsController', function($scope, TemperaturePoller, SoundPoller){
$scope.temperatures = {readings: [], dateTimes: []}
$scope.temperatures = TemperaturePoller.data;
$scope.$watch(function(scope) {return scope.temperatures},
function(newValue, oldValue) {
console.log("Value Changed: " + newValue);
$scope.graph(newValue);
})
$scope.graph = function(data) {
console.log('values changes, refreshing graph');
}
})
并且每10秒从Server
检索一次值
.factory('TemperaturePoller', function($http, $timeout){
var data = {};
var poller = function() {
$http.get('http://localhost:8080/monitoring/rest/graph/temperature').then(function(r){
data = extractTemperatureReadings(r.data)
data.calls++;
$timeout(poller, 10000)
});
}
poller();
return {
data: data
}
})
我希望每次$scope.graph
更改
$scope.temperature
我在浏览器console.log
上看到它只被调用一次
值已更改:[object Object] monitoring.js:19个值更改,刷新图表
如何强制每次10 seconds
调用它,因为我知道API中的数据正在发生变化?
答案 0 :(得分:0)
由于您正在观看的数据是对象,因此请将objectEquality
功能上的$watch
标记设置为true
。这是第三个参数。
$scope.$watch('temperatures', function(newValue, oldValue) {
console.log("Value Changed: " + newValue);
$scope.graph(newValue);
}, true);