我正在尝试做一些听起来很简单的事情,但我无法找到解决方案。
我的应用程序需要编辑包含页面的文档。
这是我的模特:
MyApplication.Document = DS.Model.extend({
title: DS.attr('string'),
pages: DS.hasMany('page', {async: true})
});
MyApplication.Page = DS.Model.extend({
document: DS.belongsTo('document', {async: true}),
title: DS.attr('string'),
params: DS.attr(),
objects: DS.attr()
});
路线:
MyApplication.Router.map(function () {
this.resource('document', {path: '/document/:document_id'});
});
MyApplication.Document = Ember.Route.extend({
model: function (params) {
return this.store.find('document', params.document_id);
}
});
当我加载文档1时,应用程序调用{{1}}。
问题在于,当我想找到文档的页面时,它会调用
http://www.myserver.com/api/document/1
而不是
http://www.myserver.com/api/pages/ID
这些嵌套URL在我的应用程序中很重要。
我在主题上发现了不同的内容,例如在JSON响应中添加http://www.myserver.com/api/document/1/pages/ID
:
links
但是当我呼叫页面时,它会在没有id的情况下请求{
"document": {
"id": "1",
"title": "Titre du document",
"pages": ["1", "2", "3"],
"links": {"pages" : "pages"}
},
。
当我要求页面时,我也尝试指定文档:
http://www.myserver.com/api/document/1/pages
无法找到有关此主题的完整文档,因此,如果有人能够解释我的错误,我会感到高兴。
感谢。
答案 0 :(得分:3)
取决于: EMBER DATA> = V1.0.0-BETA.9
处理嵌套路线的方法隐藏在release notes
下需要像这样回复带回复的链接
{
"document": {
"id": 1,
"title": "Titre du document",
"links": {"pages" : "/documents/1/pages"}
}
您需要自定义adapter:page
buldUrl
方法
MyApplication.PageAdapter = DS.RestAdapter.extend({
// NOTE: this is just a simple example, but you might actually need more customization when necessary
buildURL: function(type, id, snapshot) {
return '/documents/' + snapshot.record.get('document.id') + '/pages/' + id;
}
});
答案 1 :(得分:2)
@code-jaff answer适应Ember 2.1.0:
// app/adapters/page.js
import DS from './application'; // I suppose you have your adapter/application.js
export default DS.RESTAdapter.extend({
buildURL: function(type, id, snapshot) {
return this.host + '/' + this.namespace + '/documents/' + snapshot.record.get('document.id') + '/pages/' + id;
}
});
答案 2 :(得分:0)
您的问题很可能源于JSON中ID的引号。如果您修改序列化程序,以便文档ID和页面ID周围的ID都没有引号,那么您应该获得所期望的行为。此外,您需要修改链接的格式以指向相对路径:
生成的JSON应如下所示:
{
"document": {
"id": 1,
"title": "Titre du document",
"pages": [1, 2, 3],
"links": {"pages" : "/documents/1/pages"}
}
请参阅this answer,了解为什么遵守Ember对JSON格式的期望很重要以及对预期格式的概述。