我有两种不同的观点但是对于它们两者而言只有一个控制器,因为它们有几个共同点。但是当加载第二个视图时,存储在第一个视图范围内的所有数据都将丢失。 对于这个问题,我发现了这个非常好的解决方案here
这个解决方案看起来不错,只要我在范围内的数据很少,而不是我的情况。我有几个数据存储在控制器范围内。所以我想有办法迭代数据(只有我保存的数据而不是有角度的数据),但我不知道如何迭代这些值。有什么想法吗?
答案 0 :(得分:1)
我有一些类似的要求,我已经为同样的目的创建了一个指令
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个参数:键/值然后如何在范围内加载该值...所以一个onback的回调函数,在加载了密钥后调用$ scope
我使用了$ sessionStorage,以便在页面刷新之间保持值......