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