我在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 = []