Обновление: Вы можете использовать крючок в маршрутизаторе beforeModel(transition)
, чтобы проверить, что находится в URL-адресе.
http://example.com/products/manufacturer-209/series-881/tag-17143/none/494822/f беззаконного
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel(transition) {
console.log(transition.params.products.choises)
// if you use this url: http://example.com/products/manufacturer-209/series-881/tag-17143/none/494822/flawless
// console log would be: "manufacturer-209/series-881/tag-17143/none/494822/flawless"
}
});
По крайней мере, у вас есть остальная часть URL таким образом, вы можете отфильтровать важную информацию и перенаправлять с this.transitionTo()
на точное место.
Вы могли бы иметь следующий маршрут:
http://example.com/products/123/promotions/456
или
http://example.com/products/awesome_souce/promotions/monday_deal
В первом случае, ваш маршрут будет выглядеть следующим образом:
this.route('product', { path: "/products/:product_id"}, function() {
this.route('promotion', {path: "/promotions/:promotion_id"});
});
В второй случай, может быть, вот так:
this.route('product', { path: "/products/:product_name"}, function() {
this.route('promotion', {path: "/promotions/:promotion_name"});
});
Наконец, ваши обработчик маршрута можно загрузить соответствующие модели (пример для первого случая):
// app/routes/product.js
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.findRecord('product', params.product_id);
}
});
---
// app/routes/product/promotion.js
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
// you can get access to the parent route model if you need for the api query
const product = this.modelFor('product');
return this.store.findRecord('promotion', params.promotion_id);
}
});
Если вам нужны только из параметров от product
маршрута, вместо возврата всей записи, например, вы можете просто return params.product_name
, так что у вас будет доступ к строке с this.modelFor('product')
на уровне подпрограммы.
- выбор продуктов ids? –
Короткий ответ: вы не можете, потому что глобус жадный и будет соответствовать всем до конца пути, как вы видите. – locks