2013-04-27 71 views
0

最近我發現了一個TokenHandler,它允許我在每個休息api請求上發送一個令牌。你可以在這裏找到詳細的描述:http://nils-blum-oeste.net/angularjs-send-auth-token-with-every--request/#.UXtYlbVTDIX將angularjs中的資源包裝在單個服務中?

我正面臨在我的項目中實現這個處理程序的問題。我的項目正在處理一些資源,讓我來談談作者。什麼我目前做的是:

angular.module('PostService', ['ngResource']).factory(.... 
angular.module('AuthorService', ['ngResource']).factory(.... 

我把它包在我主要的應用程序模塊

var app = angular.module('myApp', ['PostService', 'AuthorService']); 

我的問題是,我在哪裏設置的TokenHandler?它必須分配給一個模塊嗎?我會將它分配給PostService,但我不能在AuthorService中使用它作爲結果?

因此,我有另一個問題。是否有可能換多種資源於一體的服務,如:

angular.module('RestService', ['ngResource']).factory(['Post', 'Author'],... 

回答

2

只需按照引用的文章中的準則,宣告TokenHandler服務:

angular.module('TokenHandler').factory('TokenHandler', function() {...

並配置需要分配服務令牌以下列方式:

angular.module('AService', ['ngResource', 'TokenHandler']).factory('AService', ['$resource', 'TokenHandler', function($resource, tokenHandler) { 
    var resource = $resource("http://...", { 
     ... 
    }, { 
     get: { 
      method:'GET', 
      params:{ 
       action:'get' 
      }, 
      isArray:false 
     }, 
     ... 
    }); 

    resource = tokenHandler.wrapActions(resource, ["get", ...]); 

    return resource; 
}]); 

您只包裝需要發送令牌的操作。 至於你的第二個問題,這不是一個好的編程習慣,無論如何,一個工廠只返回一個對象。

+0

感謝您的澄清。 – 2013-04-27 06:02:45

+0

Aww等,有問題。當我像上面說的那樣聲明模塊時,出現錯誤:找不到模塊TokenHandler。任何想法爲什麼? – 2013-04-27 06:40:23

+0

這裏是代碼http://dpaste.com/1075274/引發錯誤,我甚至沒有包括在任何模塊中的服務。 – 2013-04-27 06:42:15