我想将不完整的网址重定向到完整正确的网址:
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 :(得分:0)
Ember按预期工作。
您点击产品路线,它获取模型,然后在afterModel中,它重定向回产品路线,这将再次启动路线生命周期,这意味着它将再次获取模型,然后再次调用afterModel。 / p>
解决问题的另一种方法是在afterModel中替换为URL,而不是重定向回相同的路径。
请参阅此StackOverflow答案以实现此目的: https://stackoverflow.com/a/3503206/2891906