2014-07-08 66 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

相关问题