javascript - Angularjs 数据存储最佳实践

标签 javascript angularjs

我的 Angular 应用程序有 2 个 Controller 。我的问题是,当用户离开页面时, Controller 不会保留数据。

如何将 Controller 上选定的数据存储到数据存储中,以便可以在其他 Controller 之间使用?

最佳答案

选项 1 - 自定义服务

您可以利用专用的 Angular 服务在 Controller 之间存储和共享数据( services 是单实例对象)

服务定义

 app.service('commonService', function ($http) {

        var info;

        return {
            getInfo: getInfo,
            setInfo: setInfo
        };

        // .................

        function getInfo() {
            return info;
        }

        function setInfo(value) {
            info = value;
        }
});

在多个 Controller 中使用

app.controller("HomeController", function ($scope, commonService) {

    $scope.setInfo = function(value){
        commonService.setInfo(value);
    };

});


app.controller("MyController", function ($scope, commonService) {

    $scope.info = commonService.getInfo();

});
<小时/>

选项 2 - html5 localStorage

您可以使用内置的浏览器本地存储并从任何地方存储您的数据

写作

$window.localStorage['my-data'] = 'hello world';

阅读

var data = $window.localStorage['my-data']
// ...
<小时/>

选项 3 - 通过网络服务器 API

如果需要在不同用户之间保存数据,则应该将其保存在服务器端的某个位置(db/cache)

function getProfile() {
    return $http.get(commonService.baseApi + '/api/profile/');
}

function updateProfile(data) {
    var json = angular.toJson(data);
    return $http.post(commonService.baseApi + '/api/profile/', json);
}

关于javascript - Angularjs 数据存储最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31626360/

相关文章:

jquery - SVG 元素上的 Angular 动画

javascript - 在 Javascript 中按月份拆分表

javascript - 如何仅使用 javascript 设置通过 p5.js 中的 createButton 函数创建的 slider 的样式?

javascript - 如何在 Node.js 中获取 url 作为参数?

java - 渲染 JSP 页面后设置 ng-model

javascript - Safari 扩展 – 更新表单自动完成的 angularJS 模型

javascript - 在 AngularJS 中读取 URL 参数 - 一种简单的方法?

javascript - 创建新数组或增加计数器

javascript - 为什么 NodeJS 不将 Promise 用于 readFile API?

angularjs - Angular 1.x/2 混合,业力测试不引导 ng1 应用程序