1

在彻底搜索 stackoverflow 并阅读了 emberjs.com 上的所有文档后,我发现自己陷入了困境。我有一个复杂的 json 对象,我试图在我的 ember 项目中建模和输出。我无法控制 JSON,否则我会更改它的格式以便更容易理解。也就是说,这是我的问题。

我有以下 json

[
{
    "id":1,
    "catId": "10051",
    "catUrl": "path/to/location",
    "childCount": "4",
    "description": [{
        "text": "Description Text"
    }],
    "identifier": "UNQ123456",
    "partialResults": "false"
}
]

我想要得到的是描述中的文本值。我已经尝试创建 emberjs.com 上描述的 hasMany 和 belongsTo 嵌套模型构造,以及许多其他在堆栈溢出时被描述为答案的模式,但它们似乎都不起作用或匹配我必须工作的数据构造和。我什至在这个页面的第一个代码块中尝试了匿名函数。http://emberjs.com/guides/models/defining-models/试图将其遍历到我想要的文本。

无论如何,任何帮助将不胜感激。

4

1 回答 1

1

您可以定义自定义数据转换来处理您的特殊 JSON 字段。这可以通过使用DS.RESTAdapter.registerTransform函数来完成。这样的事情应该适用于您的用例:

DS.RESTAdapter.registerTransform('descriptionText', {
  serialize: function(data) {
    var text = data[0].text;
    return text;
  },
  deserialize: function(text) {
    var data = [Ember.create({text: text})];
    return data;
  }
});

然后将其用作模型的自定义属性:

App.MyModel = DS.Model.extend({
  ...
  description: DS.attr('descriptionText')
});

descriptionText请注意,只要您使用相同的名称,转换的名称可以是其他名称DS.attr(...)

希望能帮助到你。

于 2013-08-02T23:54:42.800 回答