2015-09-07 39 views
1

我有以下情況燼處理: -過渡到對錯誤動作之前的路線ember.js

  1. 我必須過渡到具有模型掛鉤的路線。模型鉤子返回一個承諾。 (說路線A - >路線B,路線B有返回承諾的模型掛鉤)
  2. 當B中的模型掛鉤正在運行時,會進入載入路線(用於顯示「請等待」輸入msg給用戶)。
  3. 如果B中的模型鉤子失敗,我需要轉換回路線答:我在處理B.路線的錯誤動作

的問題是,在處理錯誤的行動路線B,以前的路線並不總是路線A.它也可以來自其他路線。

我嘗試了可能的解決方法,但他們並沒有爲我工作了: -

1)使用window.history.back() - 這是因爲B線沒有輸入失敗,因爲模型勾諾承諾失敗。所以我得到路線A的前一條路線。

2)使用this.controllerFor('application')。get('currentRouteName') - 這給出了加載路線(當從路線A過渡到路線B時,中間路線'loading'呈現)。

我可以使用條件檢查與查詢參數,但我覺得這是不高效的,因爲我必須檢查許多條件。

我只是想返回到調用路由B.

請原諒我,如果我錯過了什麼路線。

回答

0

示例項目:Twiddle

我重新Ember.Route捕捉所有的轉換,並在應用控制器屬性保存當前的路由名稱。當調用error action時,我轉換到保存在該屬性中的路線。具有動態段的路線需要額外處理。

另一種方法:

在你router.js,

var Router = Ember.Router.extend({ 
    location: config.locationType, 
    didTransition : function(infos){ 
    this._super(infos); 
    var appController = this.container.lookup('controller:application'); 
    var crn = infos[infos.length - 1].name; 
    if(appController && crn!=='loading' && crn!=='error'){ 
     Ember.set(appController,'myRouteName',crn); 
    } 
    } 
}); 

我不知道是否有任何內置的解決方案。

+0

非常感謝您的回覆。這種解決方法適用於我的情況。但是Ember中有沒有內置的解決方案? –