GOOGLE ADS

суббота, 30 апреля 2022 г.

Один и тот же компонент Vue.js на двух вкладках браузера заставляет <select> отражать выбранные значения

У меня есть приложение Vue, использующее vue-router и несколько компонентов, отображаемых в x-templates. В одном из этих шаблонов разметки у меня есть объект <select>. Когда я открываю эту страницу на двух отдельных вкладках в одном и том же сеансе браузера, измененный выбор на одной вкладке отражается на другой вкладке. Сначала я подумал, что дело в данных и методах, но потом я добавил совершенно ванильный <select> с несколькими <option> в нем, без привязок, данных, обработчиков событий или чего-то еще — и он ведет себя так же! Когда я выбираю параметр на одной вкладке, он выбирает то же самое на другой. То же самое для других объектов <select> в том же приложении.

Я не могу это объяснить. Что мне не хватает? Нужно ли поддерживать сеансы, чтобы избежать этого? Если да, то как?

Изменить: теперь мне очевидно, что все объекты ведут себя одинаково и отражаются между сеансами. Это должно быть по дизайну, но как мне сделать, чтобы отделить его с помощью хорошего шаблона в Vue.js?

App.js

Vue.use(VueRouter)
const router = new VueRouter({
mode: 'history',
base: "/",
routes: [
{
path: '/',
name: "start",
component: Start,
},
{
path: '/character/view/:guid',
name: "character.view",
component: ViewCharacter,
}
]
})
new Vue({
router,
el: '#app',
data: function() {
return {
baseUri: "/"
}
},
computed: {
}
})

HTML

<html>
....
<script type="text/x-template" id="template-character-sheet">
<div>
<select>
<option>1</option>
<option>2</option>
</select>
</script>
...
<script src="/components/ViewCharacter.js"></script>
<script src="/components/App.js"></script>
...
</html>

ViewCharacter.js (штуки)

const ViewCharacter = {
template: "#template-character-sheet",
components: {
"navigation": Navigation
},
data: function() {
return {
properties: values,
.......
}
},
computed: {
current_stability: function() {
return this.rules.stability_levels.filter(o => o.level == this.character.stability)[0];
},
.......
},
.......
}


Решение проблемы

[Не проверено]

Я думаю, что ваша проблема одинакова :keyв обоих ваших <select>, попробуйте добавить сгенерированный ключ, чтобы решить проблему.

Документы: https://v3.vuejs.org/guide/migration/key-attribute.html.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...