2014-07-08 102 views
2

ember-data 1.0,ember 1.5.1,rails 3.2如何處理Ember中服務器的重定向響應

如何處理來自服務器的重定向響應?在餘燼數據0.13我這樣做:

Staas.Adapter = DS.RESTAdapter.extend 
    didCreateRecord: (store, type, record, payload) -> 
    if payload.redirect 
     window.location.replace payload.redirect 
     return 

    @_super(store, type, record, payload) 

但現在在適配器沒有didCreateRecord方法。我想實施通用解決方案,而不是在每個保存諾言中。

謝謝。

回答

2

您可以重新打開RESTAdapter並修改所有實例的ajax方法方法。

DS.RESTAdapter.reopen({ 
    ajax: function(url, type, hash) { 
     var adapter = this; 

     return new Ember.RSVP.Promise(function(resolve, reject) { 
     hash = adapter.ajaxOptions(url, type, hash); 

     hash.success = function(json) { 
      Ember.run(null, resolve, json); 
     }; 

     hash.error = function(jqXHR, textStatus, errorThrown) { 
      Ember.run(null, reject, adapter.ajaxError(jqXHR)); 
     }; 

     Ember.$.ajax(hash); 
     }, "DS: RestAdapter#ajax " + type + " to " + url).then(function(json){ 
     if(json && json.redirect){ 
      //redirect here 
      alert('redirect'); 
     } 
     return json; 
     }, function(jqXHR){ 
     if(jqXHR.status == 302){ 
      //redirect here 
      alert('redirect'); 
     } 
     return jqXHR; 
     }); 
    }, 

    }); 

實施例302點的狀態:http://emberjs.jsbin.com/OxIDiVU/796/edit

實施例有效載荷:http://emberjs.jsbin.com/OxIDiVU/798/edit

+0

完美。謝謝。 – Arugin

相關問題