我正在尝试以角度制作用户工厂。出于某种原因,我可以在某些情况下访问工厂返回的值,但在其他情况下则不能访问:像这样:
angular.module('app')
.factory('UserFactory', function () {
return {
returnedPerson: returnedPerson,
thing: thing,
//This works
person: {
name: 'Test',
age: 5
},
};
//This doesn't work
returnedPerson = {
name: 'returnme',
loggedIn: true
}
//Neither does this
function thing () {
return {
name: 'test',
}
}
我不知道区别是什么,并且希望能够将该值作为对象访问,因为我希望UserFactory
能够在我的应用中维护用户的数据。
换句话说,我打算将它注入几个不同的控制器,并希望能够在任何控制器中设置$ scope.loggedIn,并在每个使用UserFactory
的地方进行更新。这可能吗?
答案 0 :(得分:0)
你当然可以在工厂里做到这一点。但是,您只需在return语句之前移动对象和函数声明。返回后的任何内容都无法访问:
angular.module('app')
.factory('UserFactory', function () {
var returnedPerson,
thing;
//works now
returnedPerson = {
name: 'returnme',
loggedIn: true
};
//also works
thing = function () {
return {
name: 'test',
}
};
return {
returnedPerson: returnedPerson,
thing: thing,
//This works
person: {
name: 'Test',
age: 5
},
};
工厂也是单身人士,所以你只会有一个在这里返回的实例。将它注入多个控制器时很方便。