2013-11-21 33 views
2

安裝後:Ember.js過渡到路由處理查看活動

我已經得到了支持使用Imgur API圖片上傳灰燼應用程序。

我已經有一個工作路徑和模板來處理任何Imgur ID,但我希望有一個新的圖像上傳後,轉移到這條路線(使用返回的Imgur ID)

下面是相關的部分http://jsbin.com/iGOXivEW/2/edit

問題:應用程序的

  1. 這是正確使用查看和處理更改事件的正確方法?
  2. 如何從視圖切換到「imgur」路線並將新的Imgur ID傳遞給它?
+0

的[ember.js從視圖或控制器與transitionTo掙扎](可能重複http://stackoverflow.com/questions/13484238/ember-js-struggling-with-transitionto-from-視圖或控制器) – givanse

回答

5

你處理視圖內的ui事件,這很好。通過將發佈圖像的代碼移動到控制器,您可以將發送到igur或其他地方的邏輯從視圖邏輯中分離出來。

的轉變可以通過視圖調用來完成,

this.controller.transitionToRoute('imgur', imgurId);

,或者如果您移動所有控制器,

transitionToRoute('imgur', imgurId);

http://emberjs.com/api/classes/Ember.Controller.html#method_transitionToRoute

設計明智無論發佈圖像的邏輯在哪裏,如果您將轉換邏輯移至常見位置(即控制器或甚至更好的路徑),則在特定操作(即完成)內您可能會發現有用。

這種方式你總是在哪裏維護處理來自當前路線的導航的邏輯。要在控制器中調用動作或從視圖或控制器中路由,您需要使用功能send,即內部視圖this.controller.send('completed'),內部控制器this.send('completed');。這些操作需要放置在操作對象中。

http://emberjs.com/guides/views/handling-events/

+0

如果您使用ember-cli創建應用程序,通過視圖,您需要執行this.get('controller')。transitionToRoute(..)將工作 – inquisitive