2016-09-22 36 views
0

我想從工程中刪除Restangular,因爲我們沒有使用它的大部分功能,它只是增加了應用程序的重量。我想用簡單的$ http來代替。

是否有可能有不同配置的$http服務的多個實例?爲了例如有不同的攔截器或的baseUrl

在Restangular你可以做到以下幾點:

app.factory('BingRestangular', function(Restangular) { 
    return Restangular.withConfig(function(RestangularConfigurer) { 
    RestangularConfigurer.setBaseUrl('http://www.bing.com'); 
    }); 
}); 

然後,你可以注入BingRestangular這將是Restangular的預配置的實例。

$http或者有什麼辦法可以解決這個限制嗎?

回答

0

你想要的是在AngularJS中使用Factory模式。服務是單身人士,不能有多個實例。工廠可以用來創建多個實例。

function User(userId, $http) { 

    var self = this;  

    $http.get('/api/user/', {userId: userId}).success(function(result) { 

     self.details = result.data; 
    }): 
} 

userFactory.$inject = ['$http']; 
function userFactory($http) { 

    return function(user) { 

     return new User(user, $http); 
    } 
} 
angular.module('app').factory('user', userFactory); 

詳細here

+0

這並不完全回答我的問題。我試圖獲得$ http對象的多個實例,因此每個實例都可以預先配置。那些實例可以在單角度內是單角。 –

+0

您可以創建一個返回'$ http'對象的新實例的工廠,並在整個項目中使其可用。不知道這是否有幫助 – nikjohn

0

我找到了解決辦法。所有攔截器和其他東西都可以在單個請求的配置中提供。所以我在$http對象(代理模式)上做了封裝,例如提供了預配置的攔截器。通過這種方式,我可以使用一組攔截器和以及其他一組攔截器。我根本不使用設置爲$http singleton的默認變量。

這是我能想到的最好的,因爲我找不到任何方式來創建具有不同默認值的$ http的多個實例。