首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将存储在控制器中的数据从一个页面传递到另一个页面

如何将存储在控制器中的数据从一个页面传递到另一个页面
EN

Stack Overflow用户
提问于 2019-01-09 03:05:24
回答 3查看 42关注 0票数 1

我目前正在为我的web应用程序使用一个控制器。数据从JSON文件加载,并通过ng-repeat显示给用户。当用户做出选择时,作用域中只有用户选择的数据。

我希望能够保持相同的作用域数据,并在不同的网页(或使用UI-Router的状态)中使用它。

我已经研究过使用ui-router,但似乎控制器会在每次状态改变时刷新。

由于设计要求,我更喜欢使用ui-router。

我的控制器代码的一部分:

代码语言:javascript
运行
复制
(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数据的工厂代码:

代码语言:javascript
运行
复制
(function() {

"use strict";

angular.module("parkit")
.factory("parkitFactory", function($http) {

    function getSpots() {
        return $http.get('/data/spots.json');
    }

    return {
    getSpots: getSpots
    }

    });

})();
EN

回答 3

Stack Overflow用户

发布于 2019-01-09 04:42:18

由于之前已经回答过,您可以使用工厂或服务来跟踪所选项目。这会将选定的值存储在服务/工厂的实例中,因此,如果有人刷新页面,这些值将会丢失。

一个更有弹性,而且在我看来很漂亮的解决方案是将选定的项目作为状态参数添加到ui-router中。使用此方法,您还可以深度链接到某些选定的状态,并且如果有人刷新页面,仍会选择相同的项目,就像您在url中添加状态参数一样。

请参阅文档中的URL参数:https://github.com/angular-ui/ui-router/wiki/URL-Routing

票数 2
EN

Stack Overflow用户

发布于 2019-01-09 03:44:56

您可能会在工厂函数中创建一个新属性,以便在用户进行选择时跟踪所选的item.Set属性。在需要使用数据的任何地方获取其他组件中的属性。

票数 1
EN

Stack Overflow用户

发布于 2019-01-09 13:19:05

使用$rootScope而不是$scope保存数据,这将允许您在同一域的控制器中的任何位置使用它。

例如:$rootScope.yourData = yourData;,然后您可以将$rootScope.yourData分配给同一域中的任何控制器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54098129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档