我是 emberjs 的新手,但很高兴进入并玩转。我正在努力的一件事是......你能加载一个对象图形深度超过1的JSON对象。我的意思是将模型设置为一系列名称/值对似乎相对简单其中值是一个简单的类型(字符串,整数,日期等),但如果它是一个对象呢?
我想它可能连接到关系模型但是从我在文档中看到的这只允许FK-> PK关系而不是内联对象。我可能正在解释我的意思,所以让我举个例子:
假设我在端点为http://my.url.com/place/[place_id]
进行REST调用,并且GET调用返回:
{
place: {
name: "string",
desc: "string",
location: {
longitude: float,
latitude: float,
radius: int
}
}
在上面的例子中,我很难理解如何建模location
。任何有关如何扩展这一点的帮助将不胜感激:
App.Place = DS.Model.extend({
name: "string",
desc: "string",
location: "?????"
});
答案 0 :(得分:1)
您可以引入新的数据转换来处理原始JSON。
DS.RESTAdapter.registerTransform('raw', {
deserialize: function(serialized) {
return serialized;
},
serialize: function(deserialized) {
return deserialized;
}
});
现在,您使用raw
作为location
的数据类型来定义您的模型。
App.Place = DS.Model.extend({
name: DS.attr('string'),
desc: DS.attr('string'),
location: DS.attr('raw')
});
如果您的服务器数据格式为
place: {
id: 'place',
name: 'foo',
desc: 'bar',
location: {
longitude: 1,
latitude: 2,
radius: 3
}
}
然后您可以绑定到模板中的location.longitude
等。以下是a jsfiddle中充实的内容。