首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖服务设置器和getter

覆盖服务设置器和getter
EN

Stack Overflow用户
提问于 2015-01-29 16:53:16
回答 1查看 3.1K关注 0票数 2

我刚接触JS和service,我有一个currentUser服务在角.它应该将检索到的当前用户设置为localStorage,以便在页面刷新之间持久化。

服务定义如下

代码语言:javascript
复制
var currentUserSrvc = function() {
  // some logic on how to save the user to localStorage
  return {
    user: {}
  };
};
angular.module('app').factory('currentUser', currentUserSrvc);

我想要覆盖这个服务的设置器和getter,以便使用localStorage.但是不需要手动添加setter和getter

不介意localStorage内部将如何工作

代码语言:javascript
复制
// I just want to use it like
currentUser.user = response.user
// instead of using it like (given that I'll provide a setter and a getter methods)
currentUser.setUser(response.user)

这有可能使用角度js吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-29 17:08:33

这就是你要找的吗?

代码语言:javascript
复制
var currentUserSrvc = function() {
  // some logic on how to save the user to localStorage

  return {
     get user() {return localStorage.user;},
     set setUser(user) {localStorage.user = user}
  };
};
angular.module('app').factory('currentUser', currentUserSrvc);

以下是在javascript中使用getter和setter的方式:

所以你会:

代码语言:javascript
复制
currentUser.user //retrieves localStorage.user
currentUser.setUser = "myUser" //sets localStorage.user to "myUser"

编辑:替代你可以这样做。

代码语言:javascript
复制
var currentUserSrvc = function() {
  var currentUser = {}
  Object.defineProperty(currentUser, "user", {
    get: function() {return localStorage.user; },
    set: function(user) { localStorage.user = user; }
  })

  return currentUser;
};
angular.module('app').factory('currentUser', currentUserSrvc);

所以你会:

代码语言:javascript
复制
currentUser.user //retrieves localStorage.user
currentUser.user = "myUser" //sets localStorage.user to "myUser"

EDIT2:或者你甚至可以这样做:

代码语言:javascript
复制
var currentUserSrvc = function() {
  // some logic on how to save the user to localStorage

  return {
     get user() {return localStorage.user;},
     set user(user) {localStorage.user = user}
  };
};
angular.module('app').factory('currentUser', currentUserSrvc);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28220206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档