2017-01-30 15 views
0

Я хотел бы перенаправить неполный URL для полного правильного URL:Ember.Route - Модель хук вызывается дважды вместо одного

http://localhost/product/12/a-single-pr -> http://localhost/product/12/a-single-product-name 

Проблема заключается в том, что модель хук вызывается дважды вместо одного, делая два идентичных запроса для извлечения одного объекта. Любые подсказки?

маршруты/product.js

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    afterModel(model, transition) { 
    let formatted = model.get('formatted'); 

    if (transition.params.product.formatted !== formatted) { 
     let path = '/product/' + model.id + '/' + formatted; 
     this.replaceWith(path, model); 
    } 
    }, 
    model(params) { 
    return this.get('store').findRecord('product', params.product_id); 
    } 
}); 

router.js

... 

Router.map(function() { 
    this.route('product', {path: '/product/:product_id/*formatted'}); 
}); 

... 

ответ

0

угасающий работает так, как ожидалось.

Вы попадаете на маршрут продукта, он выбирает модель, а затем в afterModel, она перенаправляет обратно на маршрут продукта, что снова вызовет жизненный цикл маршрута, что означает, что он снова отобразит модель, а затем снова вызовет afterModel.

Другим способом решения проблемы является замена URL-адреса в afterModel вместо перенаправления на тот же маршрут.

Смотрите этот ответ StackOverflow для того, чтобы выполнить это: https://stackoverflow.com/a/3503206/2891906