0

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

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

是一个带有示例的 JSBin。

4

1 回答 1

0

你应该在你的子路由中实现模型钩子,并且当你使用 ember 数据时,使用fixtureAdapter 和 store。

稍作修改的 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);
  }
}); 
于 2013-11-12T10:17:23.783 回答