我目前正在为我的web应用程序使用一个控制器。数据从JSON文件加载,并通过ng-repeat显示给用户。当用户做出选择时,作用域中只有用户选择的数据。
我希望能够保持相同的作用域数据,并在不同的网页(或使用UI-Router的状态)中使用它。
我已经研究过使用ui-router,但似乎控制器会在每次状态改变时刷新。
由于设计要求,我更喜欢使用ui-router。
我的控制器代码的一部分:
(function() {
"use strict";
angular
.module("parkit", ["ngMap"])
.controller("parkitController", function($scope, $rootScope, $http,
parkitFactory, NgMap) {
parkitFactory.getSpots().then(function(spots) {
$scope.spots = spots.data;
});
$scope.showSpot = function(spot) {
$scope.spot = spot;
}
});
})();
用于加载JSON数据的工厂代码:
(function() {
"use strict";
angular.module("parkit")
.factory("parkitFactory", function($http) {
function getSpots() {
return $http.get('/data/spots.json');
}
return {
getSpots: getSpots
}
});
})();
发布于 2019-01-09 04:42:18
由于之前已经回答过,您可以使用工厂或服务来跟踪所选项目。这会将选定的值存储在服务/工厂的实例中,因此,如果有人刷新页面,这些值将会丢失。
一个更有弹性,而且在我看来很漂亮的解决方案是将选定的项目作为状态参数添加到ui-router中。使用此方法,您还可以深度链接到某些选定的状态,并且如果有人刷新页面,仍会选择相同的项目,就像您在url中添加状态参数一样。
请参阅文档中的URL参数:https://github.com/angular-ui/ui-router/wiki/URL-Routing
发布于 2019-01-09 03:44:56
您可能会在工厂函数中创建一个新属性,以便在用户进行选择时跟踪所选的item.Set属性。在需要使用数据的任何地方获取其他组件中的属性。
发布于 2019-01-09 13:19:05
使用$rootScope而不是$scope保存数据,这将允许您在同一域的控制器中的任何位置使用它。
例如:$rootScope.yourData = yourData;,然后您可以将$rootScope.yourData分配给同一域中的任何控制器。
https://stackoverflow.com/questions/54098129
复制相似问题