两个浏览器选项卡中的相同 Vue.js 组件使 <select> 镜像其选定值

Posted

技术标签:

【中文标题】两个浏览器选项卡中的相同 Vue.js 组件使 <select> 镜像其选定值【英文标题】:Same Vue.js component in two browser tabs make <select> mirror its selected values 【发布时间】:2022-01-18 01:42:14 【问题描述】:

我有一个 Vue 应用程序,使用 vue-router 和一些在 x-templates 中呈现的组件。在其中一个标记模板中,我有一个 ,里面有几个

我无法解释。我错过了什么?我是否需要维护会话以避免这种情况?如果有,怎么做?

编辑:我现在很明显 所有 对象的行为相同,并且在会话之间镜像。这必须是设计使然,但是我该如何将其与 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];
      ,
      .......
    ,
.......

【问题讨论】:

【参考方案1】:

[未经测试]

我认为您的问题是两个&lt;select&gt; 中的:key 相同,请尝试添加生成的密钥来解决问题。

文档:https://v3.vuejs.org/guide/migration/key-attribute.html

【讨论】:

嗯,是的——我的意思是,它们不是单独的对象——它们是应用程序中的同一个对象,只是显示了两次——每次都在不同的浏览器选项卡中。所以,我什至不能使用用户 ID 作为键,因为用户 ID 在两个浏览器选项卡中都是相同的。【参考方案2】:

大脑崩溃。这是我忘记了浏览器同步在工具链中运行以提供内容。切换到服务,问题明显消失了。

【讨论】:

以上是关于两个浏览器选项卡中的相同 Vue.js 组件使 <select> 镜像其选定值的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 组件不显示

当我的应用程序有多个相同的选项卡时,如何访问选项卡中的组件?(如何确定活动选项卡?)

Vue.js:如何在已打开的选项卡中打开外部链接?

Vue.js - 具有动态组件的多个事件

Vue学习笔记

ExtJS MVC 控制器引用选项卡面板的活动选项卡