如何访问ember.js中的复杂嵌套json
在彻底搜索stackoverflow并阅读了emberjs.com上的所有文档后,我发现自己陷入了困境。我有一个复杂的json对象,我正试图在我的ember项目中建模和输出它。 我无法控制JSON,否则我会更改它的格式以便更容易理解。也就是说,这是我的问题 我有下面的json如何访问ember.js中的复杂嵌套json,ember.js,Ember.js,在彻底搜索stackoverflow并阅读了emberjs.com上的所有文档后,我发现自己陷入了困境。我有一个复杂的json对象,我正试图在我的ember项目中建模和输出它。 我无法控制JSON,否则我会更改它的格式以便更容易理解。也就是说,这是我的问题 我有下面的json [ { "id":1, "catId": "10051", "catUrl": "path/to/location", "childCount": "4", "description
[
{
"id":1,
"catId": "10051",
"catUrl": "path/to/location",
"childCount": "4",
"description": [{
"text": "Description Text"
}],
"identifier": "UNQ123456",
"partialResults": "false"
}
]
我想得到的是描述中的文本值。我曾尝试创建emberjs.com上描述的hasMany和belongsTo嵌套模型构造,以及许多其他在堆栈溢出中被描述为答案的模式,但它们似乎都不起作用,也与我必须使用的数据构造不匹配。
我甚至在本页的第一段代码中尝试了匿名函数。试着遍历这个到我想要的文本
无论如何,任何帮助都将不胜感激。您可以定义自定义数据转换来处理特殊的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')
});
请注意,只要对DS.attr(…)
使用相同的名称,转换的名称可以是其他名称,如descriptionText
希望有帮助。您可以定义自定义数据转换来处理特殊的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')
});
请注意,只要对DS.attr(…)
使用相同的名称,转换的名称可以是其他名称,如descriptionText
希望有帮助。这已从Ember Data Beta 1.0 Beta 1中删除。该文档提供了一些替代方法,请参阅已从Ember Data Beta 1.0 Beta 1中删除。本文档提供了一些替代方法,请参阅