我有一个如下所示的值:
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 ?
答案 0 :(得分:1)
使用工厂而不是值:
app.factory('Opportunities', ['opportunityStages', function(opportunityStages) {
var myFactory = {
stage: opportunityStages[0]
};
return myFactory;
}]);