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

时间:2016-11-22 11:26:32

标签: ember.js ember-cli ember-router

我是Ember.js的初学者,所以我参加了Codeschool课程'试试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;

我没有错误。

1 个答案:

答案 0 :(得分:1)

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