Javascript Angular JS:将对象从一个阵列存储到不同的阵列/服务

Javascript Angular JS:将对象从一个阵列存储到不同的阵列/服务,javascript,json,angularjs,Javascript,Json,Angularjs,我刚开始用Angular JS开发一个非常简单的应用程序,它有一个服务/工厂,可以保存我可以将对象推送到的数据 我有一个不同的人数组(参见html),您可以使用工厂中的addCandidate()函数将其添加为候选人 我的问题是,我希望能够将该阵列中的人员/对象存储到多个阵列中,例如候选2和候选3,具体取决于哪个路由/控制器处于活动状态 我是在正确的轨道上,还是应该完全不同地思考 工厂和控制器: var app = angular.module('myApp', []); app.factor

我刚开始用Angular JS开发一个非常简单的应用程序,它有一个服务/工厂,可以保存我可以将对象推送到的数据

我有一个不同的人数组(参见html),您可以使用工厂中的addCandidate()函数将其添加为候选人

我的问题是,我希望能够将该阵列中的人员/对象存储到多个阵列中,例如候选2和候选3,具体取决于哪个路由/控制器处于活动状态

我是在正确的轨道上,还是应该完全不同地思考

工厂和控制器:

var app = angular.module('myApp', []);

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

  var candidates = [];

  /* I want to fill this array with objects from myCtrl2 */
  var candidates2 = [];

  return{

    addCandidate: function(candidate){
      candidates.push(candidate);
    }

    /* More functions related to Candidates */

  }
});

app.controller('myCtrl1', function($scope, Candidates){

  $scope.addCandidate = function(candidate){
   Candidates.addCandidate(candidate);
  }

});

/* I want to push candidates to candidates2 here */

app.controller('myCtrl2', function($scope, Candidates){

  $scope.addCandidate = function(candidate2){
   Candidates.addCandidate(candidate2);
  }

});

/* More controllers of same kind */
HTML:

  • {{person.name} 添加候选人

看起来您希望每个控制器的候选人都不同。在这种情况下,让工厂构建一个对象构造函数(类似于类,但不是真的),而不是每次都提供相同的对象


看看这个例子。请注意,每个控制器都请求并发送其自己的候选对象,而不是使用共享的候选对象定义。

这确实有帮助,只是我希望数组中的数据在不同的路由中可用(即使返回路由1)。如果我使用控制器1从另一个路由返回路由1,工厂将使用空数组构建一个新的候选对象,并打印该对象,而不是打印添加的候选对象。因此,如果我理解,这些数组将有许多实例,并且每个实例都需要持久化?我将创建一个处理候选对象管理的服务,以及另一个基于名称或其他内容创建和持久化这些候选对象的服务。然后,每个控制器请求后一个服务,并按名称请求它所需的候选对象。
<ul>
    <li ng-repeat="person in people">
      <h2>{{ person.name }}</h2>
      <button ng-click="addCandidate(person)">Add candidate</button>
    </li>
</ul>