Ember应用程序中的父路线从服务器加载模型。该模型是一个包含一系列字段的数组,包括一个字段,该字段本身就是一个包含子路径模型的数组。模型数组在父路径中显示为一个列表,其中每个项目在单击时链接到子路径,同时将所选模型传递到子路径。
但是,由于子路由不从服务器加载其模型但从父路由接收它,因此在子路由上刷新页面(或共享URL)会产生错误。什么是解决这个问题的好方法?
Here是一个带有示例的JSBin。
答案 0 :(得分:0)
您应该在子路由中实现模型挂钩,并且在使用ember数据时,请使用fixtureAdapter和商店。
稍微修改过的JSBin http://jsbin.com/oSUZUvE/2#/documents/1/subdocument/2
App = Ember.Application.create({});
App.ApplicationAdapter = DS.FixtureAdapter;
App.Router.map(function() {
this.resource('documents', function(){
this.resource('document', {path: ':document_id'}, function () {
this.resource('subdocument', {path: 'subdocument/:subdocument_id'});
});
});
});
App.ApplicationRoute = Ember.Route.extend({
redirect: function () {
this.transitionTo('documents');
}
});
App.DocumentsRoute = Ember.Route.extend({
model: function(){
return this.get('store').find('document');
}
});
App.DocumentRoute = Ember.Route.extend({
model: function (params) {
console.log(params);
return this.get('store').find('document',params.document_id);
}
});
App.SubdocumentRoute = Ember.Route.extend({
model: function (params) {
console.log(params);
return this.get('store').find('subdocument',params.subdocument_id);
}
});