$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 内のウィジェットの位置が変更されるたびに、localStorage に新しい ID を保存して、その位置の状態を保存し、ブラウザーを閉じたり更新したりしたときにもそれが維持されるようにすることです。セッション/位置を保持します。どうすれば私がこれに取り組むことができるかについての考えを持っているかもしれませんか? ありがとうございました!