我有一个带有多个控制器的Angular应用程序。我希望每个控制器都能保持其状态,即使用户导航到另一个控制器并再次返回。基本上我希望每个视图都像用户上次看到它一样加载(除非他们完全离开应用程序或刷新等)。
我理解如何使用服务在控制器之间共享状态,但这不是我想要的。我可以为每个控制器创建一个新服务,或者将所有内容放在$rootScope
上,但这似乎不对。
建议的方法是什么?
答案 0 :(得分:1)
我会在$cookieStore
中存储任何持久性数据,甚至可能将其封装在服务中,以避免记住cookie的实际接口。这是一个例子:
var app = angular.module('app', [
'ngRoute',
'ngCookies'
]);
app.service('ticketService', function ($cookieStore) {
this.getTicket = function () {
var ticket = $cookieStore.get('currentTicket');
// Check server for ticket? (additional business logic)
return ticket;
};
this.setTicket = function (ticket) {
// Validate correct ticket? (additional business logic)
$cookieStore.set('currentTicket', ticket);
};
});
app.controller('ticketController', function ($scope, ticketService) {
var defaultTicket = {
name: '',
description: ''
};
$scope.ticket = ticketService.getTicket() || defaultTicket;
$scope.$watch('ticket', function (oldValue, newValue) {
if (oldValue === newValue) { return; }
ticketService.setTicket(newValue);
});
});