如何在父路径中加载的Ember模型将嵌套模型传递给子路径时启用页面刷新?

时间:2013-11-11 22:43:06

标签: ember.js ember-data

Ember应用程序中的父路线从服务器加载模型。该模型是一个包含一系列字段的数组,包括一个字段,该字段本身就是一个包含子路径模型的数组。模型数组在父路径中显示为一个列表,其中每个项目在单击时链接到子路径,同时将所选模型传递到子路径。

但是,由于子路由不从服务器加载其模型但从父路由接收它,因此在子路由上刷新页面(或共享URL)会产生错误。什么是解决这个问题的好方法?

Here是一个带有示例的JSBin。

1 个答案:

答案 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);
  }
});