我正在尝试在应用程序的结帐过程中在页面之间传递数据,但是它无法正常工作。我已经读了一些书,大多数人建议使用服务,但是唯一的问题是,刷新页面(用户单击刷新或稍后再返回)时,该服务中的所有数据都会消失。这是有道理的,因为服务中的数据并不是永久性的,而是会引起问题。
所以问题是:如何在angularJS中的页面之间传递数据,并且仍然保持页面刷新后传递的数据?
到目前为止,这是我的代码(尝试使用查询字符串):
.service('checkoutService', function checkoutService($location, Address, $routeParams, TicketGroup) { var ticket_quantity = 0; var ticket_group = {}; var selected_address = {}; this.loadInformation = function() { if(!ticket_quantity && $routeParams.ticket_quantity) ticket_quantity = $routeParams.ticket_quantity; if(!ticket_group && $routeParams.ticket_group_id) ticket_group = TicketGroup.get({id: $routeParams.ticket_group_id}); if(!selected_address && $routeParams.address_id) selected_address = Address.get({id: $routeParams.address_id}); } this.setTicketQuantity = function(quantity) { ticket_quantity = quantity; $location.path().search({ticket_quantity: quantity}); } this.getTicketQuantity = function() { return ticket_quantity; } this.setTicketGroup = function(object) { ticket_group = object; $routeParams.ticket_group = object.id; } this.getTicketGroup = function() { return ticket_group; } this.setSelectedAddress = function(object) { selected_address = object; $routeParams.address_id = object.id; } this.getSelectedAddress = function() { return selected_address; } });
有几种方法可以做到这一点,
注意: 只有前两个是持久性的。
就您而言,我认为使用 本地存储 或 cookiestore 是您的最佳选择。您正在尝试使用服务,如果您不希望该服务具有持久性(请保留页面或刷新页面),则该服务将是适当的。服务是由角度管理的单例,注入时您将在每次注入中获得对同一对象的引用。但是,当返回页面时,将需要重新初始化此单例,从而丢失所有先前的数据。使服务持久化的唯一方法是从数据库,本地文件或其他位置的noSQL加载数据。但是,我认为这并不是您真正追求的。
如果您对追求本地存储实现感兴趣,请查看以下模块angular-local- storage,ngStorage