Вставить одно значение в другое в AngularJS?

#angularjs

#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',
    ...
  },
  ...
]);
  

Однако жесткое кодирование значений подвержено ошибкам и не является сухим, поэтому я бы предпочел избежать этого. Как можно справиться с этим угловым способом?

Ответ №1:

Использовать фабрику вместо значения:

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

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

  return myFactory;
}]);