Angularjs:不是每次都加载视图

Angularjs:不是每次都加载视图,angularjs,Angularjs,我有一个angularjs应用程序,上面有一个菜单。当用户在菜单中导航时,将使用$location命令更改视图。每个视图都有自己的控制器 我希望在更改菜单中的视图后保持一些视图“活动”,这样,当用户返回到上一个视图时,它处于相同的状态,并且具有相同的数据 我怎么做呢 提前感谢。IMO,您可以使用浏览器的本地存储在重新加载时要保留的页面上存储数据 请检查以下内容: 基本上,在相关页面的控制器中,如果数据存在于本地存储中,则可以从这些数据构建页面呈现,否则,将显示具有默认值的页面 用户在此页面上进

我有一个angularjs应用程序,上面有一个菜单。当用户在菜单中导航时,将使用$location命令更改视图。每个视图都有自己的控制器

我希望在更改菜单中的视图后保持一些视图“活动”,这样,当用户返回到上一个视图时,它处于相同的状态,并且具有相同的数据

我怎么做呢


提前感谢。

IMO,您可以使用浏览器的本地存储在重新加载时要保留的页面上存储数据

请检查以下内容:

基本上,在相关页面的控制器中,如果数据存在于本地存储中,则可以从这些数据构建页面呈现,否则,将显示具有默认值的页面

用户在此页面上进行更改后,您将立即更新本地存储器中的相关数据集

请注意,您可能希望随时清除本地存储,可能是在用户刚刚断开连接时

就我个人而言,在整个用户导航过程中,我使用它来保存关于项目列表的搜索过滤器的状态

您可能对HTML 5中引入的本地存储感兴趣:
服务可能就是您所需要的

您可能会访问仅用于存储控制器数据的服务

angular
    .module('foo')
    .service('ContextualDataService', function () {
        'use strict';

        var data = {},
            storageIdentity = 'contextualDataService';
        return {
            get: function (key) {
                return data[key];
            },
            set: function (key, value) {
                data[key] = value;
            },
            save: function () {
                localStorage.setItem(storageIdentity, JSON.stringify(data));
            },
            load: function () {
                 var items = JSON.parse(localStorage.getItem(storageIdentity));

                 if (items) {
                      for (var key in items) {
                           data[key] = items[key];
                      }
                 }
            }
        };
});
稍后,您可以使用它并将控制器或任何东西隔离为命名空间

angular
    .module('foo')
    .controller('BarController', ['ContextualDataService', function (context) {
        var myData = context.get('foo.controllers.bar.savedKey') || 'myDefaultSavedKeyValue';

}]);

下面的解决方案很好,第三个需要更少代码的选项是配置
$http
缓存响应(根据您的应用程序而定)。这样,当您返回到视图时,以前从服务器检索的数据将从缓存中检索。只需设置
cache:true
,您就可以免费获得此信息。在合理的情况下,您可以从缓存中删除数据,以便下次从服务器检索数据。根据您的应用程序,您的里程可能会有所不同。。。