เคล็ดลับประสิทธิภาพเล็กน้อยหากใครบางคนมีบริการดาต้าสโตร์พร้อมคีย์ -> คู่ของค่า:
หากคุณมีบริการที่เรียกว่าdataStoreคุณสามารถอัปเดตการประทับเวลาเมื่อใดก็ตามที่วัตถุข้อมูลขนาดใหญ่ของคุณเปลี่ยนแปลง วิธีนี้แทนที่จะดูวัตถุทั้งหมดอย่างลึกซึ้งคุณเพียง แต่เฝ้าดูการประทับเวลาสำหรับการเปลี่ยนแปลง
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();
}
});
และในคำสั่งคุณเพียง แต่เฝ้าดูการประทับเวลาเพื่อเปลี่ยน
app.directive("myDir", function ($scope, dataStore) {
$scope.dataStore = dataStore;
$scope.$watch('dataStore.getChange("myKey")', function(newVal, oldVal){
if(newVal !== oldVal && newVal){
// Data changed
}
});
});