据我所知,Angularjs服务是通过传入Contructor函数创建的:
app.service('serviceName', function(){
this.var1 = 'foo';
this.method1 = function(){
}
});
Angular使用 new 运算符运行此函数。
我正在接受这项服务,而且我没有看到任何"这个"内幕人士
https://github.com/shreya5/angular-facebook-utils/blob/master/src/scripts/facebookUser.js
事实上,此函数返回 deferred.promise
有人可以了解这里发生的事情吗?
答案 0 :(得分:1)
您可以自由选择您想要的任何模式。只是因为使用new
使用角度运行您的功能并不强制您使用this
,也不需要您返回默认对象。
例如,这是我在Angular服务中使用的很好的习惯用法:
function myConstructor(me){
me = me || "Mark";
return {
name: me,
sayit: function(){return "Say my name, " + me}
};
}
var obj = new myConstructor("Steve");
console.log(obj.sayit())
console.log(obj.name)
答案 1 :(得分:1)
服务返回的值取决于它的使用方式。您可以随意返回任何内容。从another file将使用此facebookUser
的地方,它将用作承诺facebookUser.then
。
facebookUser.then(function(user) {
if (!user.loggedIn) {
// reload the login route
$location.path(facebookConfigSettings.loginPath || facebookConfigDefaults.loginPath);
}
});