Chút đỉnh hiệu suất nếu ai đó có một loại kho dữ liệu của dịch vụ với chìa khóa -> cặp giá trị:
Nếu bạn có một dịch vụ gọi là dataStore , bạn có thể cập nhật dấu thời gian bất cứ khi nào đối tượng dữ liệu lớn của bạn thay đổi. Bằng cách này thay vì theo dõi sâu toàn bộ đối tượng, bạn chỉ đang xem dấu thời gian để thay đổi.
app.factory('dataStore', function () {
var store = { data: [], change: [] };
// when storing the data, updating the timestamp
store.setData = function(key, data){
store.data[key] = data;
store.setChange(key);
}
// get the change to watch
store.getChange = function(key){
return store.change[key];
}
// set the change
store.setChange = function(key){
store.change[key] = new Date().getTime();
}
});
Và trong một chỉ thị, bạn chỉ xem dấu thời gian để thay đổi
app.directive("myDir", function ($scope, dataStore) {
$scope.dataStore = dataStore;
$scope.$watch('dataStore.getChange("myKey")', function(newVal, oldVal){
if(newVal !== oldVal && newVal){
// Data changed
}
});
});