Ember.js 2.9 简单嵌套路由在整页重新加载时出错

Ember.js 2.9 simple nested routes error on full page reload

我是 Ember.js 的初学者,所以我参加了 Codeschool 课程 'Try Ember'。所以按照这个课程我实际上得到了一个错误。

我的 router.js 文件如下所示:

import Ember from 'ember';
import config from './config/environment';

const Router = Ember.Router.extend({
  location: config.locationType,
  rootURL: config.rootURL
});

Router.map(function() {
  this.route('orders', function(){
    this.route('order', {path: '/:order_id'});
  });

});

export default Router;

现在,据我从教程中了解到,我有两条路线 orders.jsorder.js,模板分别为 templates/orders.hbstemplates/orders/order.hbs

orders.js 文件:

import Ember from 'ember';

export default Ember.Route.extend({
  model(){
    return [
      { id: '1', name: 'Vlatko'},
      { id: '2', name: 'Mila'}
    ];
  }
});

order.js 文件:

import Ember from 'ember';

export default Ember.Route.extend({
  model(params){
    return [
      { id: '1', name: 'Vlatko'},
      { id: '2', name: 'Mila'}
    ].findBy('id', params.order_id);
  }
});

templates/orders.hbs 文件:

<h2>Hello from orders</h2>

{{#each model as |order|}}
  <p>
    {{#link-to 'orders.order' order}}
      Order {{order.id}}
    {{/link-to}}
  </p>
{{/each}}

{{outlet}}

templates/orders/order.hbs 文件:

<p>Order {{model.id}} for {{model.name}}</p>

所以一切都非常简单并且运行良好,但是当我尝试重新加载整页(直接在页面上输入)时 /orders/1 它引发了两个错误

Error while processing route: orders.order No model was found for 'order' Error: No model was found for 'order'

Error: No model was found for 'order'

现在,我在网上搜索了很多,都找不到相同的错误。

附加提示:这仅在我使用嵌套路由时发生。例如,如果我的 router.js:

中有这样的内容
import Ember from 'ember';
import config from './config/environment';

const Router = Ember.Router.extend({
  location: config.locationType,
  rootURL: config.rootURL
});

Router.map(function() {
  this.route('orders');
  this.route('order', {path: '/orders/:order_id'});
});

export default Router;

我没有收到任何错误。

您的 order.js 文件应该是 orders/order.js。您的问题是 ember 找不到您的路线,因此您获得了默认路线。具有动态段 order_id 的默认模型挂钩基本上会执行 store.findRecord('order', theId),因此您会收到错误消息,即模型 order 未定义,因为您不使用 ember-data .