Page 433 - AngularJS权威教程
P. 433
31.11 实现用户服务 413
设置界面本身是一个功能单一的表单,负责让用户切换到它们感兴趣的城市。HTML类似于 19
这块代码(其中有一些我们还没实现的功能):
<h2>Settings</h2> 20
<form ng-submit="save()">
<input type="text" ng-model="user.location" placeholder="Enter a location" />
<input class="btn btn-primary" type="submit" value="Save" />
</form> 21
31.11 实现用户服务 22
出于同样的原因,我们隐藏了Wunderground API的复杂度,而且我们还希望隐藏用户API。
这样就可以使用本地存储,以及在应用的任意部分与用户设置控制器通信。 23
UserService本身非常简单,它不需要在应用中配置。在不使用本地存储的情况下, 24
UserService其实很简单:
// ... 25
.factory('UserService', function() {
var defaults = {
location: 'autoip'
}; 26
var service = {
user: defaults
}; 27
return service;
})
28
这个服务在应用程序生命周期内都会持有user对象。也就是说,只要浏览器窗口开着,用户
对应用程序的设置都会保持不变;然而,如果用户在Chrome中打开一个新标签页,这些设置就
会丢失,这是不理想的。 29
可以通过使用Chrome的sessionStorage功能来跨应用保留用户设置。幸好,这个API非常
简单。 30
只需添加两个函数给UserService:
31
save
restore
32
即使使用这些功能,UserService的代码也没有增长太多:
// ... 33
.factory('UserService', function() {
var defaults = {
location: 'autoip' 34
};
var service = {
user: {}, 35
save: function() {
sessionStorage.presenty = angular.toJson(service.user);
}, 36
restore: function() {