如果我正確地理解了你,你只希望範圍監視服務中的數據更改?你可以使用$watch
來做到這一點。此外,如果數據同步是一個問題,您可以考慮輪詢更新,而不是依賴於由用戶自己添加值而導致的更新。
例如:
.controller('MainCtrl', function($scope, DataService) {
DataService.startPolling()
$scope.$watch(function() { return DataService.getDataArray() }, function(data) {
$scope.someData = data
})
$scope.addAction = function(data) {
DataService.add(data)
}
})
.factory("DataService", function($http, $interval) {
var masterArray = ["0"],
intervalID
function pollForNewValues() {
$http.get(...).then(response) {
// push new values to masterArray
})
}
function saveVal(value) {
$http.post(...).then(response) {
// push new values to masterArray
})
}
return {
add: function(whattoadd) {
saveVal(whattoadd)
},
getDataArray: function() {
return masterArray;
},
startPolling: function() {
intervalID = $interval(function() {
pollForNewValues()
}, 5000)
},
stopPolling: function() {
$interval.cancel(intervalID)
}
}
})
可否請你澄清,你是什麼失去指針masterArray是什麼意思? –
爲什麼你必須失去指向'masterArray'的指針?你爲什麼不更新數組? – gkalpak
我在想這可能是錯誤導致數組指針丟失的原因。如果可能,我想避免這種情況。如果不合理,那麼我寧願告訴隊友和我自己編碼,假設「這個數組的指針非常重要,不會丟失它」。我的許多同事都不會意識到這會發生,它會引起很多混亂 – bobber205