2016-11-22 10 views
1

Я начинаю с Ember.js, поэтому я взял курс Codeschool «Try Ember». Поэтому, следуя этому курсу, я действительно получаю сообщение об ошибке.Ember.js 2.9 простая ошибка вложенных маршрутов при полной перезагрузке страницы

Мой 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; 

я не получаю сообщение об ошибке.

ответ

1

Ваш order.js файл должен быть orders/order.js. Ваша проблема в том, что ember не находит ваш маршрут, поэтому вы получаете маршрут по умолчанию. Захват модели по умолчанию с динамическим сегментом order_id будет в основном делать store.findRecord('order', theId), и поэтому вы получите ошибку, что модель order не определена, потому что вы не используете ember-data.

+0

Благодарим вас за ответ. Чистая логика. –