2013-06-30 71 views
5

我想呈現一個帶有鬍鬚模板的javascript對象數組數組,並且我還沒有發現有人問過這個問題。我可以渲染一個對象數組很好,但我無法弄清楚如何渲染它們的數組。我可以將每個嵌套數組分配給它自己的變量,但是可能有任何數量的它們,所以我真的需要將它們保存爲一個數組。如何渲染帶有鬍子的對象數組數組

這裏是數據I需要渲染的類型:

[ 
    [ 
     { id: 12345, name: "Billy" }, 
     { id: 23456, name: "Joe" }, 
     { id: 34567, name: "Jenny" } 
    ], 
    [ 
     { id: 45678, name: "Amy" }, 
     { id: 56789, name: "Julie" }, 
     { id: 67890, name: "Sam" } 
    ] 
] 

外陣列可以包含任何數量的嵌套陣列,和每個嵌套陣列可以包含任意數量的對象。

我不知道鬍子是否可能。我嘗試過使用函數,這是我第一次使用帶鬍子的函數,所以也許我做錯了什麼。我從Backbone View的渲染函數中調用它。數組數組(如上所示)是視圖模型屬性的一部分。所以這是我的嘗試。

render: 
    function() 
    { 
     this.model.attributes.getList = 
      function() 
      { 
       return function (str, func) { return 'What in the world should I return here?'; } 
      } 

     this.$el.html (Mustache.render ($ ('#detail-template').html(), this.model.attributes)); 

     return this; 
    }, 

這裏是我試圖使用函數的模板部分。

{{#getList}} 
    {{name}} 
{{/getList}} 

我很確定{{name}}不屬於那裏,但我不知道我會在那裏放什麼。我試過返回func(str),但是它打印的所有東西都是一個長字符串,包含[object Object],[object Object],[object Object],[object Object],[object Object],[object Object ],[object Object],[object Object]

我無法將該字符串用作json對象,它只是一個字符串。

我對骨幹和小鬍子都有點新鮮感,所以我認爲有人可能會有一個「最佳實踐」解決方案,或者至少可以告訴我是否不可能,所以我不會浪費任何時間它。我無法在互聯網上的任何地方找到類似的問題。

+1

難道你只是扁平你的數組?用下劃線的扁平功能?順便說一句。在那裏渲染你不應該放棄「model.attributes」而是「model.toJSON()」。 – Luke

+0

@Luke是對的,如果你使用的是鬍鬚,那麼在你接近模板的任何地方之前,你將會用JavaScript來處理所有數據。 –

回答

1

這個問題是2歲,但我覺得比從未更好。您可以使用{{。}}引用數組中的當前元素。

context = [ 
    [ 
     { id: 12345, name: "Billy" }, 
     { id: 23456, name: "Joe" }, 
     { id: 34567, name: "Jenny" } 
    ], 
    [ 
     { id: 45678, name: "Amy" }, 
     { id: 56789, name: "Julie" }, 
     { id: 67890, name: "Sam" } 
    ] 
] 

template = " 
    {{#context}} 
     {{#.}} 
      <span id={{id}}>{{name}}</span> 
     {{\.}} 
    {{/context}} 
"