角度服务返回对象?

时间:2014-08-01 22:43:42

标签: javascript angularjs promise angular-promise

据我所知,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

有人可以了解这里发生的事情吗?

2 个答案:

答案 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);
    }
});