Angular JS:将对象从一个数组存储到不同的数组/服务

Angular JS: Store objects from one array to different arrays/services

本文关键字:数组 存储 服务 一个 JS 对象 Angular      更新时间:2023-09-26

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

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

我的问题是,我希望能够将该数组中的人员/对象存储到多个数组中,例如candidates2和candidates3,具体取决于激活的路由/控制器。

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

工厂和控制器:

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:

<ul>
    <li ng-repeat="person in people">
      <h2>{{ person.name }}</h2>
      <button ng-click="addCandidate(person)">Add candidate</button>
    </li>
</ul>

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

请参阅此plunker以获取示例。请注意,每个控制器都请求并通知自己的候选,而不是使用共享的候选定义。