2017-04-07 78 views
0

自從我開始使用ember js以來,這對我來說非常混亂。 我使用燼JS 2.11(在我的package.json "ember-cli": "2.11.1"所示)emberjs中控制器和路由之間的區別

我試圖從我的組件發出的onClick行動路線,我得到了錯誤「命名爲‘getDetails’的行動中未發現產生控制器「,即使我在我的路線中有名爲getDetails的動作。

我已經讀過,用燼2.0+控制器已被棄用和路由是爲相同的目的。

請說明。

+1

我只能說,如果你使用'動作助手',那麼它會尋找相應的控制器內的行動。如果你想讓路由處理動作,你需要使用[route-action-helper](https://github.com/DockYard/ember-route-action-helper)。控制者將被從Ember中刪除,至少這是一段時間的打算;請參閱[2.2.0的指南](https://guides.emberjs.com/v2.2.0/controllers/);然而這已經改變。控制器將保持不變,並且不會被棄用。您可以使用控制器和路由。希望有人會更多地解釋差異。 – alptugd

回答

3
  1. 控制器尚未棄用。使用它們as documented,一旦它們確實被棄用,將會有一個清晰而無痛的升級途徑。
  2. 當您從而不是模板發送類似{{action "getDetails"}}的操作時,控制器是默認操作處理程序。錯誤中的短語generated controller表明您沒有創建一個,所以Ember通過創建匿名控制器爲您完成了工作。根據定義,它沒有動作,屬性或任何東西。創建一個控制器,如果你想處理這個動作。
  3. 或者,如果您確實想要處理路線(或其中一條父路線)上的操作,請使用ember-route-action-helper插件。
  4. "ember-cli": "2.11.1"裏面的package.json只告訴你Ember CLI(命令行界面)的版本,Ember版本是"ember-source"在同一個文件內,或者"ember"bower.json裏面。

提示:仔細閱讀指南! :)