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.js
和 order.js
,模板分别为 templates/orders.hbs
和 templates/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
.
我是 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.js
和 order.js
,模板分别为 templates/orders.hbs
和 templates/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
.