2015-05-07 38 views
0

我正在使用Restangular並試圖放入一些數據,但它似乎失去了BaseUrl。 在配置功能中,我爲Restangular和其他Restangular字段定義了BaseUrl。Restangular no BaseUrl when PUT

Constants.restangularBaseUrl是http://192.168.1.100/api/

RestangularProvider.setBaseUrl(Constants.restangularBaseUrl) 
    .setRestangularFields({ 
    selfLink: '_links.self.href', 
     id: '_id', 
     etag: '_etag' 
    }) 
    .addResponseInterceptor(function(data, operation, what, url, response, deferred){ 
     if (operation === 'getList') { 
      var result = data._items; 
      result._meta = data._meta; 
      result._links = data._links; 
      return result; 
     } 
     return data; 
    }); 

然後,我有一些模型是這樣的:

(function(){ 
    angular.module('models.ebayItems', ['services.constants', 'restangular']) 
    .service('EbayItems', ['Constants', 'Restangular', function (Constants, Restangular) { 
     Restangular.extendModel('ebayitems', function(model) { 
      model.toggleMonitor = function(){ 
       var item = this; 
       Restangular.one('ebayitems', this._id).patch({active: this.active}, '', {'If-Match': this._etag}) 
       .then(function(data){ 
        item._etag = data._etag; 
       }, function(error){ 
        console.log('error', error); 
       }); 
      }; 
      return model; 
     }); 

     var ebayItems = Restangular.all('ebayitems'); 

     var ebayItemsOneSearch = function(_id){ 
      return ebayItems.customGETLIST('', {where: {searchId: _id}}); 
     }; 

     return { 
      items: ebayItems, 
      oneSearch: ebayItemsOneSearch 
     }; 

    }]) 
})(); 

現在,當我嘗試做一個PUT請求與基於該模型的項目:

item.put() 

它使用了錯誤的網址,我的意思是它失去了BaseUrl,所以不是放在:

http://192.168.1.100/api/ebayitems/12345 

它把在

http://192.168.1.100/ebayitems/12345 

導致404錯誤。

爲什麼? 我在做什麼錯? 任何幫助真的很感激。 謝謝

回答

1

問題是設置selfLink字段是來自API後端的相對URL,它將覆蓋BaseUrl。 從其工作的配置功能中刪除該字段。

RestangularProvider.setBaseUrl(Constants.restangularBaseUrl) 
    .setRestangularFields({ 
     id: '_id', 
     etag: '_etag' 
    }) 
    .addResponseInterceptor(function(data, operation, what, url, response, deferred){ 
     if (operation === 'getList') { 
      var result = data._items; 
      result._meta = data._meta; 
      result._links = data._links; 
      return result; 
     } 
     return data; 
    });