2014-10-11 44 views
0

我想要Ember.Select工作,幾乎在那裏。我舉了一個例子:http://exmer.com/selecttest/pages什麼是Ember.Select與Ember-CLI的正確方法

要查看我的問題,請單擊某些最近的頁面,然後單擊編輯。選擇不是通過contentBinding="controllers.modelnames"獲取模型。如果點擊模型名稱路由並再次編輯一些最近頁面,它將正確工作,因爲現在我們獲取了模型名稱。我可以從頁面控制器中自己獲取模型名稱,但在我看來,這更像是一種黑客攻擊。

源是https://github.com/broerse/ember-select-test(它在運行時的CouchDB)

所以我的問題是:什麼是使用Ember.Select與Ember-CLI

回答

4

瞭解燼工作流程的正確方法是非常重要的在這裏。當您導航到URL Ember時,會解析URL並將其映射到您的路由器。此時,Ember知道它需要從URL中包含的每個資源/路由中獲取模型。一旦獲取了所有這些模型,它就會使用關聯的控制器來裝飾它們。這裏的權利描述你的問題在哪裏。僅使用控制器不會導致模型被提取。您在控制器上使用needs,該控制器不是路由器中的父級/祖先,因此無法保證它將被填充。您需要手動獲取模型並將其存儲在其他控制器上,或者獲取模型並將其存儲在當前控制器中,以確保在訪問該路線時它存在。

+0

是的,謝謝。這是我認爲是黑客。 https://github.com/broerse/ember-select-test/blob/master/app/templates/page.hbs上的'{{mname.content.name}}'可以工作,但select不是。這不合邏輯。 – 2014-10-11 18:36:33

+0

你對需求的期望越多越不正確,所以你必須破解它才能使其工作。你向我展示的是完全不同的東西,一個關於ember-data與一個ember控制器需求的異步關係。 Ember和Ember-數據是兩種不同的產品。此外,你不應該訪問內容屬性,它應該是'{{mname.name}}' – Kingpin2k 2014-10-11 18:48:34

+0

剛剛測試{{mname.name}},你是正確的。 Ember-Data是Ember-CLI的基本組成部分,所以也許我的問題更清楚地表達爲「使用Ember.Select和Ember-Data的正確方式是什麼」。在你的答案中,你提出了兩種方法。什麼是正確的方法? – 2014-10-11 19:10:33

0

Ember select在任何地方都可以工作(不管是否支持cli),無論它是燼數據還是其他庫或只是pojos。

hbs {{view 'select' content=model optionValuePath='content.id' optionLabelPath='content.name' selection=selectedModel}}

這將意味着你的模型有一個ID屬性和名稱屬性。該模型將從路線填充,如果它是次要模型,則可以在路線中使用this.modelFor,並在路線上的setupController中的控制器上將其設置爲不同的屬性。

Ember select的問題是性能,它不是一個組件。

+0

所以正確的方法是不使用綁定在https://github.com/broerse/ember-select-test/blob/master/app/模板/ page-edit.hbs但它不起作用。那麼我不能得到它的工作,但這可能是因爲@ Kingpin2k說,因爲我有問題獲得數據;-)如果有人有時間,請看看,也許提交補丁github。 – 2014-10-14 06:33:28

+0

Ember select有更多的問題,而不僅僅是性能,它不是一個組件。有關於重寫它的討論,因爲它充滿了問題。使用Ember Data並且異步加載它時,Ember select變得特別棘手,因爲Ember select不是承諾意識。以下是一些討論這些問題的線索:https://github.com/emberjs/ember.js/issues/5259和https://github.com/emberjs/data/issues/1405。 – 2014-10-22 23:09:21