2013-04-23 52 views
0

我有以下用例。 在服務器端的錯誤,我想顯示給用戶出了問題(可能允許他們重試)。我可以使用彈出或狀態欄。 同時,我想保持當前視圖的開放狀態,即用戶應該保持發生錯誤的位置。如何在ember中動態修改視圖RC3

我想(請糾正我,如果我錯了)我不應該使用transitionTo(...),因爲這將取代我目前的觀點。我的意圖是相當於在應用程序視圖(最外面的模板/視圖)中有一個通用的功能,它動態地添加/刪除通知。

非常歡迎如何構建和修改UI的設計思路。

謝謝!

回答

1

我對這個確切用例的解決方案很簡單。我在我的ApplicationRoute中定義了一個事件處理程序,它收集這些異常並將它們注入到我的自定義ExceptionsController中,並將exceptions呈現在主應​​用程序模板的某處。

App.ApplicationRoute = Ember.Route.extend({ 
    events: { 
     exceptionHandler: function (exception) { 
      this.controllerFor('exceptions').addObject(exception); 
     } 
    } 
}); 

ExceptionsControllerArrayController只是擴展。

App.ExceptionsController = Ember.ArrayController.extend(); 

在我的主要應用程序模板最後的地方我就用:

{{render 'exceptions'}} 

我將離開模板你的想象力。

編輯

然後,如果你想提高一個例外只是用send在你的控制器或路由的任何地方觸發一個動作。

this.send('exceptionHandler', exception); 

例外情況是您的自定義模型。

該解決方案的優點是,您可以覆蓋應用程序路徑下或任何控制器下的任何其他路徑中的處理程序。

+0

謝謝!這真的很有幫助。 – Flexer 2013-04-24 11:05:20