我試圖用Ember.js和Handlebar.js共築表中的每個循環。不幸的是我遇到了如何構建由Ember.TextArea和valueBinding組成的單元格的方法。如何實現嵌套定製傭工(車把)
這個想法如下。有一個領域模型項目有很多條目(1到n關係)。兩個域模型都是不同的對象,並且不嵌入(條目未嵌入項目中)。
每個項目都有稱爲鍵的陣列,其包含多個字符串(例如 'A', 'B', 'C',...)。此外每個條目都包含一組元素。每個這個元素也有一個上面提到的鍵作爲屬性鍵。請參閱下面的詳細模型。
模型
項目
{ keys: ['a', 'b', 'c'] }
條目
{
parameters: [
{
key: 'a',
value: 'aaaa'
},
{
key: 'b',
value: null
},
{
key: 'c',
value: '123'
}
]
}
的目標是在最終具有其中包含的每個鍵的列的HTML表該項目(在上述案例中將會有3個標題爲'a','b','c'的列)。對於現在與項目關聯的每個條目(換句話說,在後臺加載到ArrayController中),必須有一行。現在來了棘手的部分:每個單元格必須綁定到「參數」數組的適當元素(單元格的內容應該是Ember.TextArea)。
|| a || b || c ||
-----------------------------------------------------------------------------
| entry 1 binding to element of parameters array where key = 'a' | ... | ... |
----------------------------------------------------------------------------
| entry 2 binding to element of parameters array where key = 'a' | ... | ... |
-----------------------------------------------------------------------------
方法我
構建表頭明顯,當然很容易和工作沒有任何問題:
<table>
<thead>
<tr>
{{#each key in project.keys}}
<th>{{key}}</th>
{{/each}}
</tr>
</thead>
<tbody>
...
<tbody>
</table>
,我不知道如何構建的一部分代碼是正文。遍歷數組控制器中的條目可能是的,但如何綁定到適當的元素 - 我不知道。棘手的是,綁定是建立在正確的元素上的。例如,在鍵'a'的列中,綁定必須是參數數組的元素,其中element.key ==='a'。
<tbody>
{{#each entry in App.entriesController}}
<tr>
{{#each key in project.keys}}
???
{{/each}}
</tr>
{{/each}}
</tbody>
我想用一個車把幫手但計算出,Ember.js確實(比handlebar.js的文檔不同)未通過對象本身,它只傳遞屬性其中之一的名稱然後可以用來獲取價值。不幸的是,對於一個數組,我看不出如何獲取當前在每個循環中處理的數組的條目。
這個想法是將條目和關鍵字傳遞給helper,然後這個返回一個綁定到entry.parameters數組的正確元素的Ember.TextArea的實例。
注:通過循環project.keys我們可以保證按鍵的順序是一樣的,在報頭(相同的迭代順序)。
任何其他的想法如何處理這個問題?
沒有人知道如何解決這個問題嗎?或者讓我反過來問一下。我可以通過代碼來創建一個EmberView嗎?如果是的話,有人可以分享一個簡短代碼示例,瞭解如何通過代碼創建視圖(例如添加子視圖...)。 – rit