В моем Aurelia webapp, у меня есть страница со ссылками. Они пойманы с помощью click.delegate=""
, который идет на метод в коде. Код представления затем будет использовать http-fetch для вызова AJAX, а затем обновит данные, просто обновив внутреннюю переменную, привязанную к некоторым элементам в шаблоне HTML. Работает отлично, за исключением одного - оно не отражается в строке адреса URL (в браузере - поэтому закладка невозможна).Установить URL-адрес без обновления всего шаблона в Aurelia
Одним из решений является создание маршрута с параметром. Это вызовет метод activated()
, w. параметр. Я заметил, что конструктор не перепутал (при навигации по тому же маршруту, но с разными параметрами), поэтому я предполагаю, что тот же экземпляр ViewModel используется.
{ route: 'cell-detail/:id', name: 'cell-detail', moduleId: 'cell-detail', title: 'cell-detail' },
Однако, я хочу знать (и предотвратить) весь шаблон в HTML от визуализируемого каждый раз, а не только часть измененной связанной переменной. Я уже использую activationStrategy.invokeLifecycle
, так что, возможно, он уже работает таким образом. Я не знаю, как это выяснить.
Правильно ли это, и если да, есть ли способ обновить строку URL/location, не перерисовывая весь HTML-шаблон (возможно, новое место для отражения внутренних изменений без использования маршрутизатора)?
Update Наблюдая изменения DOM в вкладке элементов в Chrome Developer Tools, похоже Aurelia обновляет только то, что изменилось - как Реагировать теневую-РОМ. По крайней мере, есть большая видимая разница (HTML загорается/мигает в консоли dev) при использовании activationStrategy.replace
.
Однако при использовании маршрутизатора существует небольшая разница, а просто обновляется внутренняя связанная переменная, поэтому, если кто-то точно знает, что такое happeing, это будет просветляющим.
Интересно, я посмотрю на это. Благодарю. – specimen
Это, кажется, работает отлично! В документах я вижу, что в маршрутизаторе есть встроенная поддержка PushState. – specimen