2016-04-03 53 views
1

由於控制器在Ember中被棄用,我嘗試在我的應用程序中刪除它們。因此,在所有使用路由的方法getControllerFor('nameOfTheRoute')訪問其他控制器的方法或屬性的所有情況下,我現在想調用類似getRouteFor('nameOfTheRoute')的東西,但是此方法不存在。那麼我能做些什麼來訪問其他路線。我會非常感謝任何建議。Ember.js:如何以編程方式訪問路由

編輯: 我有一個應用程序,這有點像Sequel Pro for Mac OS。這個應用程序有一個基本的應用程序佈局,其中兩個區域分別用於表格(左側)和一個表格行(右側)。兩個區域下方都有按鈕,用於在表格或表格行上執行操作。在燼聲中,這些按鈕在應用程序路徑中定義。只要沒有選擇表(因此沒有錶行,並且行 - 路徑未加載),行的按鈕不處於活動狀態。如果表格行被加載到行區域中,則按鈕被激活。這裏是問題:當我點擊行的按鈕時,我想在行 - 路由中執行一個操作。當使用控制器時,我可以使用getControllerFor()並訪問actions-hash。但是,我怎麼能在行 - 路線上執行一個操作?或者如何改變我的設置以達到我的目標?

回答

0

爲什麼你需要訪問其他路線?如果您想訪問父路由,請將操作發送給父路由。如果你想訪問的路由不是父路由,調用它們是不合適的,因爲它與DDAU衝突。也許在這種情況下,你想要訪問的行爲應該放在服務中。或者定義一個更適合這種情況的組件。

+1

感謝您的回答。請在我希望解釋我想達到的目標的問題中參考我的編輯。也許你可以告訴我DDAU是什麼。謝謝。 – Mannimalte

+0

在這種情況下,您應該向路線發送動作。 DDAU是「數據減少,行動起來」的原則。你可以看看:[blog1](http://www.samselikoff.com/blog/data-down-actions-up/),[blog2](https://dockyard.com/blog/2015/10/14/最佳做法,數據下載行動),[討論](http://discuss.emberjs.com/t/how-ember-data-affects-data-down-actions-up/6975) – ykaragol