2013-11-25 56 views
1

我在迭代模板中的Ember.js中的對象和數組時遇到問題。我確信這是我實施Handlebars迭代器的一種方式,但我似乎無法弄清楚。問題在模板中對Ember.js中的對象進行迭代

Records = { 

    data: [ 
      [ 
       recordID: "1234", 
       recordName: "Record Name" 
      ], 
      [ 
       recordID: "1235", 
       recordName: "Record Name 5" 
      ], 
      [ 
       recordID: "1236", 
       recordName: "Record Name 6" 
      ] 
      ], 
    otherInformation: "Other Info", 
    moreInformation: "More Information" 
} 

然後,我有模板輸出看起來像這樣...

{{#each Records.data}} 
    {{this}} 
{{/each}} 

這只是給我的數據數組中的第一條記錄,但我希望能夠訪問每個陣列,並且每個鍵入子數組以輸出特定值。

回答

2

正如馬爾西奧·羅德里格斯說,你的數組常量是無效的。

//編輯澄清: 一個JavaScript數組可以包含對象。對象是基本文字,數組,文字符號或函數中的對象。您正試圖將鍵值對插入數組中,這兩者都不是這些。

在你的嵌套數組中,你有一個鍵 - 值對,它不能在它自己的地方,它必須被包含在一個對象文字中。如果你一定要保持嵌套陣列結構,並且具有的屬性數組中的元素,這樣做的一個辦法是

Records = { 
    data: [ 
     [ 
      { aKey: "recordID", aValue: "1234" }, 
      { aKey: "recordName", aValue: "Record Name XY" }, 
     ], 
     [ 
      { aKey: "recordID", aValue: "12356" }, 
      { aKey: "recordName", aValue: "Record Name AB" }, 
     ] 
    ], 
    otherInformation: "Other Info", 
    moreInformation: "More Information" 
} 

然後,在你的模板,你可以遍歷說:

<script type="text/x-handlebars" data-template-name="index"> 
    {{#each record in Records.data}} 
    {{#each attributePair in record}} 
     {{attributePair.aKey}}:{{attributePair.aValue}} 
     <br /> 
    {{/each}} 
    {{/each}} 
</script> 
+0

你和Marcio已經表明該物體形成不正確。在定義這些標準時,您是否有任何關於適當構建對象的參考?謝謝 – datapanda

+0

好吧,你基本上結合了javascript對象文字和數組文字語法,這本身就很好。然而,它受到一定的規則,快速搜索提出了這些資源:http://answers.oreilly.com/topic/2138-how-to-use-object-literals-in-javascript/和http:/ /answers.oreilly.com/topic/2151-when-to-use-the-array-literal-notation-in-javascript/ – Poindexter

2

你的Record.data數組看起來不正確,你有兩個嵌套數組,並且有不正確的對象聲明。我得到使用這個工作:

的Javascript

Records={ 
    data: [ 
     { 
      recordID: "1234", 
      recordName: "Record Name" 
     }, 
     { 
      recordID: "1235", 
      recordName: "Record Name 5" 
     }, 
     { 
      recordID: "1236", 
      recordName: "Record Name 6" 
     } 
    ], 
    otherInformation: "Other Info", 
    moreInformation: "More Information" 
} 

模板

{{#each Records.data}} 
    {{recordID}} 
    {{/each}} 

請給看看http://jsfiddle.net/marciojunior/m7khc/

+0

感謝您的解釋。不幸的是,我正在構建的應用程序需要有以前格式的兩個嵌套數組,因爲未知數量的對象。在實際的應用程序表示中,對象屬性可以是5或50,因此解決它們的唯一方法是使用數組。 我假設沒有辦法按照上面列出的對象構造的Handlebars中的按鍵查看單個嵌套數組項目? – datapanda

+0

我認爲康拉德的答案將解決您的問題。 –