0

我刚刚开始在 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:

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

1 回答 1

1

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

有关示例,请参见此 plunker。请注意,每个控制器都请求并通知它自己的候选者,而不是使用共享的候选者定义。

于 2013-08-16T15:57:59.820 回答