Компонент ember не перезагружается при перезагрузке маршрута или при переходе к

У меня есть маршрут ember, который вызывает компонент ember для отображения всех данных.

У меня есть случай, когда ключ маршрута меняется, и я перезагружаюсь с помощью route.transitionTo. Данные загружаются нормально. Но проблема в том, что компонент делает что-то в методах init и didInsertElement, которые на route.transitionTo не запускаются.

Как я могу убедиться, что на transitionTo компонент вызывается снова?

Я не могу использовать route.refresh, потому что это не влияет на модель.

Любая помощь будет оценена, спасибо!

1
0
298
1

Ответы 1

Что ж, есть способ посложнее и лучше, а есть способ ленивый и быстрый:

  1. Лучший способ: я предлагаю вам создать свойство в маршруте и передать этот параметр компоненту, а в компоненте создать вычисляемое свойство для этого параметра, который вы отправили, и там вы можете запустить свой код, который вы вызывали. Функция init и didInsertElement.

Например.: router.hbs

{{component-name parameter=parameter}}

Component.js

lineWidth: Ember.computed('parameter', function() {
    // I will run here if I get the parameter (and the parameter changed in route)
}),
  1. Не лучший способ: Вы можете перезагрузить весь компонент следующим образом:

router.hbs

{{#if reload}}
    {{component-name}}
{{/if}}

router.js

this.set('reload', false);
Ember.run.next(() => {
    this.set('reload', true);
});

Я уже пошел с первым вариантом, он работает. Но мне кажется неправильным, что я должен поставить для этого слушателя, я надеялся на более чистый вариант. Второе - это уже слишком. Но спасибо, что нашли время!

nullpointer 10.08.2018 23:30

Другие вопросы по теме