主干循环遍历并从嵌套集合中获取值

Backbone looping through and getting value from nested collection

本文关键字:集合 获取 嵌套 循环 遍历      更新时间:2023-09-26

我在访问骨干集合中的嵌套值时遇到问题。到目前为止,我已经算出了一些数值。这里是html和javascript代码以及我的结果:代码:http://jsfiddle.net/mM2Mk/4/结果:http://tinypic.com/r/2qn3amu/6

然而,这个解决方案中的集合并不遵循我实际api的结构。我想要的结构是这样的:

teamsCollection = new Standings.Collections.TeamsCollection([
{
    credit: {
        message: "Provided by ",
        link: "",
        logoUrl: ""
    },
    metadata: { },
    groups: [
        {
            labels: [ ],
            standings: [
                {
                    team: {
                        id: 9369,
                        name: "IF Elfsborg",
                        shortName: "Elfsborg",
                        link: ""
                    },
                    stats: [
                        {
                            name: "gp",
                            value: 30
                        },
                        {
                            name: "w",
                            value: 18
                        },
                        {
                            name: "d",
                            value: 5
                        },
                        {
                            name: "l",
                            value: 7
                        },
                        {
                            name: "gf",
                            value: 48
                        },
                        {
                            name: "ga",
                            value: 29
                        },
                        {
                            name: "gd",
                            value: 19
                        },
                        {
                            name: "pts",
                            value: 59
                        }
                    ]
                },
      {
                    team: { 
                        id: 19740,
                        name: "BK Häcken",
                        shortName: "Häcken",
                        link: ""
                    },
                    stats: [
                        {
                            name: "gp",
                            value: 30
                        },
                        {
                            name: "w",
                            value: 17
                        },
                        {
                            name: "d",
                            value: 6
                        },
                        {
                            name: "l",
                            value: 7
                        },
                        {
                            name: "gf",
                            value: 67
                        },
                        {
                            name: "ga",
                            value: 36
                        },
                        {
                            name: "gd",
                            value: 31
                        },
                        {
                            name: "pts",
                            value: 57
                        }
                    ]
                },

这段代码为我们提供了一些体育比赛结果,如比赛、胜利、净胜球等。这只是该系列中其他几个团队中的一个。我现在的问题是如何循环遍历嵌套的值并显示它们,就像我在上面的示例(tinypic url)中所做的那样。我的目标是获得团队名称以及统计数据,并在html中显示它们。其他团队也是如此。

只需使用模板并使用foreach循环遍历数组,就可以将accordion HTML放置在适当的位置。

你可以使用已经包含的Underscore模板,因为Underscore是Backbone的依赖项。
或者你也可以使用其他模板引擎,比如Handlebars: source.

都给出了如何遍历对象的例子。

编辑:


让我们做一个随机模板(带下划线,比较困难):

<script id="myTemplate">
<% _.each(standings, function(standing) { %>
  <a href="<%= standing.team.link %>"><%= standing.team.name %></a><br/>
  <ul>
  <% _.each(standing.stats, function(stat) { %>
    <li><%= stat.name %>: <%= stat.value %></li>
  <% } %>
  </ul>
<% } %>
</script>

然后编译它并调用你的组[0]或类似的东西

_.template($('#myTemplate').html(), groups[0]);

var myTemplate = _.template($('#myTemplate').html());
myTemplate(groups[0]);

当然你必须调整这些值,但事情是这样的