2013-06-30 72 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}} 
"