在AngularJS中将一个值注入另一个值?

时间:2014-07-01 16:01:18

标签: angularjs

我有一个如下所示的值:

app.value('opportunityStages', [
  'NEGOTIATION',
  'PROPOSAL',
  'PERCEPTION_ANALYSIS'
]);

有效。我想将该值注入另一个值,所以我尝试了这个:

app.value('opportunities', [
  'opportunityStages', // Failed attempt to inject opportunityStages

  [
    { account: 'Caterpillar',
      stage: opportunityStages[0], // Failed attempt to use the values
      closeDate: new Date(2014, 7, 13)
    }
    // More opportunity objects that follow are omitted
  ]);

我真的没想到这会起作用,因为我的理解是你只能把东西注入函数中。

我可以在商机中硬编码 opportunityStages ,如下所示:

app.value('opportunities', [
  { account: 'Caterpillar',
    stage: 'NEGOTIATION',
    ...
  },
  ...
]);

然而,对这些值进行硬编码是容易出错而不是DRY,所以我宁愿避免使用它。如何处理 Angular Way

1 个答案:

答案 0 :(得分:1)

使用工厂而不是值:

app.factory('Opportunities', ['opportunityStages', function(opportunityStages) {

  var myFactory = {
    stage: opportunityStages[0]
  };

  return myFactory;
}]);