#ember.js
#ember.js
Вопрос:
Я пытаюсь отобразить taking-cash/index
внутри taking-cash
{{outlet}}
:
router.js
:
this.route('retirement-options', function () {
this.route('taking-cash');
Он не отображает его внутри розетки, если я явно не укажу /index
путь:
this.route('retirement-options', function () {
this.route('taking-cash', function() {
this.route('index', { path: '' });
});
});
Почему это не /index
подразумевается, могу ли я не указывать это в router.js
?
Ответ №1:
Ember автоматически предоставляет индексный маршрут только для маршрутов, у которых есть хотя бы один другой дочерний элемент.
Давайте посмотрим на ваш пример:
this.route('retirement-options', function () {
this.route('taking-cash');
});
Это создает три маршрута:
retirement-options
retirement-options.index
retirement-options.taking-cash
retirement-options.index
и retirement-options.taking-cash
оба используют один и тот же родительский маршрут retirement-options
.
retirement-options
сам по себе не доступен для навигации. Он всегда будет разрешаться для retirement-options.index
маршрута, если переход явно не нацелен taking-cash
на дочерний маршрут.
Как только вы добавите другой дочерний маршрут к retirement-options.taking-cash
индексному маршруту, Ember автоматически создаст для него маршрут.
Вы можете применить явный индексный маршрут, создав маршрут, как вы показали. Но нет особой ценности в том, чтобы иметь индексный маршрут только как конечный узел.
Пожалуйста, найдите больше информации о маршрутах индекса в руководствах: https://guides.emberjs.com/release/routing/defining-your-routes/#toc_index-routes
Ответ №2:
Ember автоматически предоставит индексный маршрут только для маршрутов, но ему не обязательно иметь дочерний элемент. На самом деле это функция обратного вызова, которая должна присутствовать.
Итак, посмотрим на пример,
this.route('retirement-options', function() {
this.route('taking-cash', function() {
this.route('index', { path: '' });
});
});
индексная часть не является обязательной специально. Как только у вас будет объявлена функция обратного вызова, индекс будет там.
Это будет делать то же самое, что и в примере выше.
this.route('retirement-options', function() {
this.route('taking-cash', function() {});
});