我在Ember中嵌套對象有很多(痛苦)的問題。我想我可能會以錯誤的方式處理事情,因爲我懷疑這是一個相當標準的事情。假設我有一個對象A「有很多」B,而每個B「有很多」C等(這種架構基本上與我的關係數據庫模式相匹配)。Ember JS:嵌套對象和體系結構
我不需要這些嵌套路由,所以我認爲自然的方式來呈現像A這樣的對象就是使用partials。喜歡的東西:
模板進行:
...A stuff...
{{#each Bs}}
{{ partial "show_B" }}
{{/each}}
等。
問題是我想讓子對象擁有自己的控制器。我知道自RC1以來有新的itemController(http://emberjs.com/blog/2013/02/15/ember-1-0-rc.html),這很有用,但有所限制。比方說,在層次結構中,C對象每個都有一個D對象。所以C++模板應該是這樣的:
... C stuff...
{{#with c.D}}
{{ partial "show_D" }} // How do I get this partial to have its own controller?
{{/with}}
我猜新{{control}}
可以幫助在這裏,但我使用它有很多的麻煩(沒有被正確設定上下文)。另外,在我看來,它是否剛剛被添加(並且仍在開發中),這可能意味着應該有另一種方式來實現這一點。最後,使用兩個不同的API感覺有點奇怪:「itemController」用於項目列表,「{{control}}」用於單個項目 - 在一天結束時,我只是試圖將對象綁定到控制器在這兩種情況。
有人能指出我在這裏向正確的方向?
謝謝!
PJ
非常感謝泰迪。一個問題是把'{{control}}'放在每個塊中,現在並沒有真正的工作。請參閱此處:https://github.com/emberjs/ember.js/issues/1990。它造成了很多問題。您需要手動將相應的控制器註冊爲單例 - 這對我來說就像是一種黑客攻擊。所以實際上,現在itemController和'{{control}}'在集合上有不同的行爲......這讓我覺得整個事情更加奇怪。 – PJC 2013-03-16 16:36:01
請注意解決方法是將其註冊爲**不是**單身人士。誠然,這是一個黑客,這就是爲什麼'控制'仍然隱藏在一個標誌後面:(但是,如果你得到它的工作,它就像'itemController'一樣。 – 2013-03-16 16:48:36
這個線程可能對看起來這樣的人有所幫助:http ://discuss.emberjs.com/t/control-vs-itemcontroller/493/10 – sandstrom 2013-05-06 11:42:08