获取和设置AngularJS中的工厂值/对象

获取和设置AngularJS中的工厂值/对象,angularjs,Angularjs,其中一部分是关于这是否可能的问题,但我正在尝试创建一个名为currentUser的工厂值,它将保存userService的一次使用。我正试图找出如何使这种互动发生 如果我的工厂如下: app.factory('currentUser', function() { }); app.factory('userService', function() { return { users: [{ name: "John", password: "12",

其中一部分是关于这是否可能的问题,但我正在尝试创建一个名为currentUser的工厂值,它将保存userService的一次使用。我正试图找出如何使这种互动发生

如果我的工厂如下:

app.factory('currentUser', function() {

});

app.factory('userService', function() {
  return {
    users: [{
      name: "John",
      password: "12",
      email: "test@example.com",
      phone: "238-491-2138"
    }, {
      name: "Austin",
      password: "potaoes",
      email: "example@gmail.com",
      phone: "138-490-1251"
    }]

  };
});
我有一个控制器,它可以执行以下操作,有没有一种方法可以将
currentuser=userService.users[I]。或者,如果这是一种糟糕的方式,我该如何设置一种跟踪“当前用户”的方式

$scope.login=function(){
for(var i=0;i
不确定这是否可行,因为工厂似乎总是有一个
返回
,而从来没有一个get/set场景。因此,如果这对Factory来说是一个不好的用途,我应该怎么做呢?

,因此您应该在构建应用程序时期望服务总是解析为相同的值


也就是说,您的服务只是一个JavaScript对象,其字段/属性是可变的。我认为在“用户服务”中添加一个名为“当前”的字段没有任何问题,该字段旨在包含对当前用户的引用。

您有几个选项。您可以将其作为用户服务本身的一部分:

app.factory('userService', function() {
  var currentUser;

  return {
    getCurrentUser: function() {
      return currentUser;
    },
    setCurrentUser: function(user) {
      currentUser = user;
    },
    users: [{
      name: "John",
      password: "12",
      email: "test@example.com",
      phone: "238-491-2138"
    }, {
      name: "Austin",
      password: "potaoes",
      email: "example@gmail.com",
      phone: "138-490-1251"
    }]

  };
});
也可以将其存储在单独的对象中:

app.factory('currentUser', function() {
  var currentUser;

  return {
    getCurrentUser: function() {
      return currentUser;
    },
    setCurrentUser: function(user) {
      currentUser = user;
    }
  };
});

为什么过度使用$timeout?是否严格要求在消息出现和重定向发生时引入一些延迟?似乎这是在试图解决一个问题,而这个问题最好通过承诺来解决。
app.factory('currentUser', function() {
  var currentUser;

  return {
    getCurrentUser: function() {
      return currentUser;
    },
    setCurrentUser: function(user) {
      currentUser = user;
    }
  };
});