0

私が理解している限り、Angularjs サービスはコンストラクター関数を渡すことによって作成されます。

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を返します

誰かがここで何が起こっているのかを明らかにできますか?

4

2 に答える 2

1

サービスから返される値は、その使用方法によって異なります。何を返すかは自由です。これが使用される別のファイルから、promise として使用されます。facebookUserfacebookUser.then

facebookUser.then(function(user) {
    if (!user.loggedIn) {
       // reload the login route
       $location.path(facebookConfigSettings.loginPath || facebookConfigDefaults.loginPath);
    }
});
于 2014-08-01T23:23:13.293 に答える
1

どのパターンを選ぶかは自由です。angular が関数を実行するからと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)
于 2014-08-01T23:03:20.363 に答える