0

我从 RESTful API 得到以下(简化的)输出:

{products: [{
    product: { 
        id: 1, name: "T-Shirt red"
    },
    images: [{
        id: 1, size: 'm', url: 'http://db.co/t-shirt-red_m.jpg'
    }, {
        id: 2, size: 'xl', url: 'http://db.co/t-shirt-red_xl.jpg'
    }]
}, {
    product: {
        id: 2, name: "T-Shirt blue"
    },
    images: [{
        id: 3, size: 'm', url: 'http://db.co/t-shirt-blue_m.jpg'
    }, {
        id: 4, size: 'xl', url: 'http://db.co/t-shirt-blue_xl.jpg'
    }]
}]}

使用 Ember 版本 12,Product 模型的声明应该如何,如何遍历结果?在那个方向上找不到任何例子。

以下访问数据不起作用(我只是找不到正确的语法):

var products = App.Product.find();                  // seems to work
var prodNames = products.getEach('product.name');   // doesn't work
var secondProd = products.getObject(1).get('name'); // doesn't work

提前非常感谢!克劳迪奥。

4

1 回答 1

1

DS.hasMany 和 REST 适配器的一些选项可能会对您有所帮助。

我在 MongoDB 嵌入式模型中使用了类似的设置。我在下面附上了一些例子。

我不想尝试保存到嵌入式数组,所以我使用了嵌入式:加载,但是您可以使用嵌入式:'always' 将整个对象持久化回服务器(尽管它的工作原理并不像我预计)如果您保存父对象,则使用“始终”。

DS.RESTAdapter.map 'App.Check',
  line_items: { embedded: 'load' }
  parties: { embedded: 'load' }

App.Check = DS.Model.extend
  description: DS.attr("string")
  modified_date: DS.attr("date")
  parties: DS.hasMany('App.Party')

App.Party = DS.Model.extend
  name: DS.attr("string")
  check: DS.belongsTo('App.Party')

然后,您可以引用该项目。在一个视图中,我从内容设置为 DS.Check 实例的 ArrayController 访问它,如下所示。

{{#each party in content.parties }}
于 2013-03-13T00:31:18.377 回答