2

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

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

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

至:

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

这有点矫枉过正......为什么没有像arrayand这样的内置类型object

4

1 回答 1

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将是您的后端返回的内容,数组或对象等。

希望能帮助到你。

于 2013-07-02T13:30:41.690 回答