Ember数组数据

时间:2013-03-13 14:46:44

标签: ember.js ember-data

在Ember数据模型中使用数组的正确方法是什么? Tom Dale指出,ember已经嵌入了一个关系"在此comment中,但我无法找到任何有关此操作的文档或示例。

例如,我有Category数据模型,因此具有名为conditionValues的属性

App.Category = DS.Model.extend({
  name: DS.attr('string'),
  conditionValues: //this is an array
});

我想用我的服务器返回的数组填充此属性,如下所示。 Each category has many condition values。怎么可能这样做呢?

[condition_values] => Array
    (
        [0] => Array
            (
                [DisplayName] => Brand New
            )

        [1] => Array
            (
                [DisplayName] => Like New
            )

        [2] => Array
            (
                [DisplayName] => Very Good
            )

        [3] => Array
            (
                [DisplayName] => Good
            )

        [4] => Array
            (
                [DisplayName] => Acceptable
            )

    )

1 个答案:

答案 0 :(得分:4)

2014年2月26日更新

自Ember Data 1.0 beta及以上版本开始,此答案中的代码不再有效。


您可以通过两种方式处理:

第一种方法是定义一个名为App.ConditionValues的模型,然后定义一个关系:

App.Category = DS.Model.extend({
  //.. your attributes
  conditionValues: DS.hasMany('App.ConditionValues')
});

第二种方式来创建自己的custom transform

DS.RESTAdapter.registerTransform('array', {
  serialize: function(value) {
    if (Em.typeOf(value) === 'array') {
      return value;
    } else {
      return [];
    }
  },
  deserialize: function(value) {
    return value;
  }
});

然后在你的模型中:

App.Category = DS.Model.extend({
  //.. your attributes
  conditionValues: DS.attr('array')
});