我在本教程中插入: https://thinkster.io/mean-stack-tutorial
使用此代码定义Angular.js工厂:
app.factory('posts', [function(){
var o = {
posts: []
};
return o;
}]);
我不明白的是,稍后在控制器中填充变量$ scope.posts,使用以下代码:
$scope.posts = posts.posts;
这有效,而:
$scope.posts = posts.o.posts;
没有。我不明白你如何直接访问“posts”工厂中的“posts”变量;这是因为输入代码:
return o
所有o对象的代码现在都被认为是“posts”工厂代码的一部分?
答案 0 :(得分:0)
变量o不是工厂的属性,它只是一个临时局部变量。工厂源代码相当于:
app.factory('posts', [function(){
return {
posts: []
};
}]);
一般来说,这段代码:
var x = <some expression>;
return x;
相当于:
return <some expression>;
答案 1 :(得分:0)
这是因为你要归还整个物体。
例如,您可以简化此代码:
app.factory('posts', [function(){
var o = {
posts: []
};
return o;
}]);
像这样:
app.factory('posts', [function(){
return {
posts: []
};
}]);
它具有相同的逻辑,你明显可以做posts.o.posts
...
答案 2 :(得分:0)
用简单的术语想象一下。
拿一段这样的代码:
function foo()
{
var bar = {
baz: 5
};
return bar;
}
var myVar = foo();
此时myVar
引用bar
创建的foo()
。它并没有完全引用foo()
的变量。
因此,要访问bar.baz
,您需要myVar.baz
。你不会myVar.bar.baz
。
Angular中的工厂本质上是相同的场景,只是作为Angular工厂包装。