Ember.js RESTAdapter属性类型

时间:2013-07-02 12:46:03

标签: ember.js ember-data

RESTAdapter内置了stringnumberbooleandate的属性类型。有关系可以链接另一个模型来表示一些复杂的数据。

要表示array,我需要使用转换或更改API,如下所示:

["ember.js", "angular.js", "embergular.js"]

为:

[
    {
        "id": 1,
        "ember.js"
    },
    {
        "id": 2,
        "angular.js"
    },
    {
        "id": 3,
        "embergular.js"
    }
]

哪个有点矫枉过正...... 为什么没有像arrayobject这样的内置类型?

1 个答案:

答案 0 :(得分:3)

IMO主要原因是没有像数组或对象这样的属性类型主要是每个设计。

  

要表示数组,我需要使用转换或更改API,如下所示:

但要表示array而不需要与模型建立关系,您可以定义一个不会触及您的数据的自定义转换(您已经提到过)。例如,要将数组用作模型属性,您可以执行以下操作:

DS.RESTAdapter.registerTransform('rawData', {
  deserialize: function(serialized) {
    return serialized;
  },  
  serialize: function(deserialized) {
    return deserialized;
  }   
});

然后在你的模型中定义它:

App.MyModel = DS.Model.extend({
  myArray: DS.attr('rawData')
});

这样,属性myArray将是您的后端返回的内容,数组或对象等。

希望它有所帮助。