我是一个javascript noob所以我不明白为什么在下面的代码中作者使用Avengers.cast而不仅仅是Avengers?
var myApp = angular.module('myApp', []);
myApp.factory('Avengers', function() {
var Avengers = {};
Avengers.cast = [{
name: "Robert Downey Jr.",
character: "Tony Stark / Iron Man"
}];
return Avengers;
})
function AvengersCtrl($scope, Avengers) {
$scope.avengers = Avengers;
}
答案 0 :(得分:1)
var Avengers = {};
这意味着:创建一个新对象并通过变量Avengers
引用它 Avengers.cast = [{
name: "Robert Downey Jr.",
character: "Tony Stark / Iron Man"
}];
这意味着:刚创建的对象现在有一个名为cast
的属性。这是一个Array,只包含一个对象(带有两个带String值的属性)。
答案 1 :(得分:0)
在您的代码中,cast
的{{1}}属性设置为特定对象。比方说,最初Avengers
没有价值。在工厂部分,Avengers
变为
Avengers
您可以在代码中的某个位置使用此功能,例如Avengers.cast = [{
name: "Robert Downey Jr.",
character: "Tony Stark / Iron Man"
}];
。以下是该函数的示例;
console.log(Avengers.cast)
您可以在代码中的某处使用myApp.factory('Avengers', function() {
return {
helloWorld: function() {
return "Hello, World!"
}
};
});
。
总之,您可以使用angular.js factory创建对象,并为该对象设置属性,也可以在该对象中创建函数。有关详细信息,请参阅here
答案 2 :(得分:0)
回答您的具体问题:传递信息的方法不止一种。
作者本可以使Avengers
服务只是数组而不是数组的对象。
所以选择有些随意,因为你似乎正在接受。
如果作者计划扩展具有更多属性的Avengers
服务,那么这就是选择具有该数组的对象的原因。
虽然如果你打算这样做,你应该查看constant
- 也许它比factory
更合适。