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