我有兩個不同的視圖,但對於他們來說只有一個控制器,因爲它們有幾個共同點。但是當加載第二個視圖時,所有存儲在第一個視圖範圍內的數據都將丟失。 對於這個問題,我發現這非常好的解決方案here保存/恢復幾個範圍變量的angularjs
只有當我的範圍內的數據數量很少,這不是我的情況下,這種解決方案看起來不錯。我有幾個數據存儲在控制器範圍內。所以我想有一種方法來迭代數據(只有我保存的數據不是角度的數據),但我不知道如何迭代這些值。有什麼想法嗎?
我有兩個不同的視圖,但對於他們來說只有一個控制器,因爲它們有幾個共同點。但是當加載第二個視圖時,所有存儲在第一個視圖範圍內的數據都將丟失。 對於這個問題,我發現這非常好的解決方案here保存/恢復幾個範圍變量的angularjs
只有當我的範圍內的數據數量很少,這不是我的情況下,這種解決方案看起來不錯。我有幾個數據存儲在控制器範圍內。所以我想有一種方法來迭代數據(只有我保存的數據不是角度的數據),但我不知道如何迭代這些值。有什麼想法嗎?
我有幾分相似的要求,我創建了一個指令,爲了同樣的目的
csapp.directive("csDataStore", ["$location", "$sessionStorage", function ($location, $sessionStorage) {
var controllerFunction = ["$scope", function ($scope) {
var enter = function() {
var storedValue = $sessionStorage[$scope.key];
if (angular.isDefined(storedValue)) $scope.value = storedValue;
$scope.onLoad();
};
enter();
var exit = function() {
$sessionStorage[$scope.key] = $scope.value;
};
$scope.$on("$destroy", function() { exit(); });
}];
return {
restrict: "E",
scope: { key: '@', value: '=', onLoad: '&' },
controller: controllerFunction
};
}]);
我使用這樣
<cs-data-store key="stkh.view" value="filter" on-load="loadData()"></cs-data-store>
指令所以我們這裏有3個參數:鍵/值,然後在範圍中加載該值時如何操作......因此,將使用的加載回調函數將在$範圍內加載密鑰後調用,該函數將在我使用的$ scope
$ sessionStorage,以保持頁面刷新之間的值...
你能接受/ upvote上面的答案,如果它幫助你 – harishr
不清楚你的意思是「角度數據」與你的數據 – charlietfl
@charlietfl:如果你控制'$ scope'變量,你可以看到大量的數據/以'$'或'$$'開頭的屬性。 –
容易修復...使用'angular.copy()',將去除所有'$$ hashkey'屬性。當你用'$ http'發送數據時,它也會將其剝離。 – charlietfl