【问题标题】:How to display JSON nested array in ember templates using handlebars如何使用把手在 ember 模板中显示 JSON 嵌套数组
【发布时间】:2014-08-14 03:12:40
【问题描述】:

我来自服务器的 json api 是

{  
   taxonomies:[  
      {  
         id:2,
         name:"Brand",
         root:{  
            id:2,
            name:"Brand",
            pretty_name:"Brand",
            permalink:"brand",
            parent_id:null,
            taxonomy_id:2,
            taxons:[  
               {  
                  id:8,
                  name:"Ruby",
                  pretty_name:"Brand -> Ruby",
                  permalink:"brand/ruby",
                  parent_id:2,
                  taxonomy_id:2
               },
               {  
                  id:9,
                  name:"Apache",
                  pretty_name:"Brand -> Apache",
                  permalink:"brand/apache",
                  parent_id:2,
                  taxonomy_id:2
               },
               {  
                  id:10,
                  name:"Spree",
                  pretty_name:"Brand -> Spree",
                  permalink:"brand/spree",
                  parent_id:2,
                  taxonomy_id:2
               },
               {  
                  id:11,
                  name:"Rails",
                  pretty_name:"Brand -> Rails",
                  permalink:"brand/rails",
                  parent_id:2,
                  taxonomy_id:2
               }
            ]
         }
      }
   ]
}

我想在我的车把模板中显示分类单元 -> pretty_name

{{#each}} 只显示项目符号而不显示数据

我不知道如何遍历数组。 {{taxonomy.root.taxons.firstObject.pretty_name}} 显示名称,但仅显示每个分类单元的第一个对象,而不是全部对象

<ul>
{{#each taxonomy in controller}}
{{#each}}
<li>{{taxonomy.root.taxons.pretty_name}}</li>
{{/each}}
{{/each}}
</ul>

如何获取数据?

【问题讨论】:

  • 您能在 emberjs.jsbin.com 中重现您的问题吗?但只是猜测。第二个 each 应该看起来像 {{#each taxonomy.root.taxons}} 并在打印中使用 {{pretty_name}}

标签: json ember.js handlebars.js


【解决方案1】:

您的 JSON 不符合 Ember 的 JSON 约定,如 http://emberjs.com/guides/models/connecting-to-an-http-server/ 和更多详细信息,http://emberjs.com/api/data/classes/DS.RESTAdapter.html 所述。这意味着您的选择是:

  1. 更改您的 JSON API 以返回与 Ember 数据约定一致的 JSON
  2. 编写您自己的Adapter,扩展DS.RESTAdapter,读取上面列出的JSON

对于选项 1,只需修改您的服务器以返回符合上述约定的 JSON。如果您可以这样做,这通常是最简单的方法。

对于选项 2,您需要为每个模型或整个应用程序定义一个新适配器。然后,您需要覆盖此函数:http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_extractArray

查看他们在该链接上的示例代码,了解如何执行此操作。

【讨论】:

  • 我已经在使用 RESTAdapter 并且数据成功地来自服务器,我可以在浏览器的 ember 检查器中看到。问题是我不知道如何在 ember 模板中显示它
  • 是的,默认的 RESTAdapter 处理获取数据和序列化数据。因此,您需要自定义 RESTAdapter 中负责序列化的那些部分。
猜你喜欢
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多