我想控制$ scope。$ watch函數。目前,我的迭代有一個無限循環。
$scope.$watch('dashboards', function(newVal, oldVal) {
if (newVal !== oldVal) {
$scope.dashboard = $localStorage.sample;
$scope.dashboards['1'].id = $scope.dashboards[1].id + 1;
$localStorage.sample = $scope.dashboards[1];
console.log('newval: '+$scope.dashboards['1'].id);
} else {
$scope.$storage = $localStorage;
$localStorage.sample = $scope.dashboards[1];
$scope.dashboard = $localStorage.sample;
$scope.dashboards['1'].id = $scope.dashboards[1].id.length + 1;
$localStorage.sample = $scope.dashboards[1];
console.log('oldval: '+$scope.dashboards['1'].id);
}
}, true);
這裏是我的scope.dashboards:
$scope.dashboards = {
'1' : {
id : '1',
widgets : [{
code : "bla1.html",
col : 0,
row : 0,
sizeY : 1,
sizeX : 2,
title : "Bla1"
}, {
code : "bla2.html",
col : 2,
row : 0,
sizeY : 2,
sizeX : 2,
title : "Bla2"
}, {
code : "bla3.html",
col : 0,
row : 4,
sizeY : 1.5,
sizeX : 2,
title : "Bla3"
}
}
我所要完成的是,每次裏面有我的$ scope.dashboards在小部件的位置的改變,我會保存一個新的ID在localStorage中保存其職位狀態,以便在瀏覽器關閉/刷新時保留其會話/職位。也許你有一個想法,我將如何能夠在此工作?謝謝!
您正在導致無限循環,因爲每當'$ scope.dashboards'變量發生變化並且$ watchcher被觸發時,您都會再次進行更改。 – 2014-12-19 07:03:26
@NewDev有什麼解決方法你可能知道嗎? – bluestella 2014-12-19 07:06:51
我不確定你想要做什麼,以及爲什麼你需要在每個$ scope.dashboards更改時更改$ scope.dashboards。 – 2014-12-19 07:13:20