想要在其他服务中覆盖创建的angularJS对象,但是在应用程序中按ctrl +f5后它会被重新初始化

want to overwrite created angularJS object in another services but it gets reinitialize after ctrl +f5 in application

本文关键字:+f5 ctrl 初始化 应用程序 覆盖 服务 其他 创建 对象 angularJS      更新时间:2023-09-26

我在angular js中有两个服务,一个是用默认值声明对象,另一个是为这些对象赋新值。我能够在控制器中重写后使用此对象,但当我刷新浏览器(Ctrl+F5)时,它被重新初始化为默认值。

请帮助。

这个效果很好,但是在ctrl+F5之后,它再次设置为false。

    var appl = angular.module('app');
appl.service('service1', ['$rootScope', '$modal', function($rootScope, $modal) {
    this.prefs = {
        rememberMe: false,
        popIt: function() {
            $modal.open({       
                templateUrl: "views/flag-message.html",
                controller: "flagMessageCtrl",
        });
        }
    };
}]);

var appl = angular.module('app');
appl.service('service2', ['$rootScope', '$scope', 'service1', function($rootScope, $scope, service1) {  
        service1.prefs.rememberMe = true;
}]);
var appl = angular.module('app');
appl.controller('DemoCtrl', ['$scope', 'Restangular', 'service1', function ($scope, Restangular, service1) {
alert(service1.prefs.rememberMe);
}]);

你可以在浏览器中存储数据而不需要设置cookie,并且通过将值存储在window.name中来避免在angular js中编写长代码。

保存在window.name中的值即使刷新页面也会在同一浏览器选项卡中保留。

这是预期的行为。当你按ctrl+f5时,你的整个angular应用将被重新加载。如果您希望某些设置被持久化,您应该使用某种允许您这样做的库。

一个很好的选择是来自Auth0的angular-storage,它允许你使用不同的浏览器存储(本地,会话和cookie)来在会话之间持久化值/设置。

是的,当你刷新页面时,它会被重置,当你刷新页面时,你所有的JavaScript上下文都丢失了

你可以使用localStorage,它会一直保存到你关闭浏览器。

$localStorage.item = []