javascript - Mounted 上的 Vue 复选框在 Edge 中不起作用

标签 javascript vue.js microsoft-edge

我正在处理一个 Vue 页面,该页面上有一个复选框,安装后我需要从 cookie 中读取一个值,并在必要时选中该复选框。我注意到在 Edge 浏览器中它没有正确设置,即使 Mounted 确实被调用了。

我已将此问题提炼为以下最小的示例。如果你在 Edge 中打开它并点击刷新,你应该会看到它有时没有被选中。在 Chrome/IE11 中,它始终如此。

对于导致此问题的原因以及如何解决它有什么建议吗?

<!DOCTYPE html>
<html>
<head>
  <title>Vue / Edge Checkbox Issues</title>
  <script src="https://unpkg.com/vue"></script>
</head>
<body>
  <div id="app">
    <p>This checkbox should become checked on mounted. Hit refresh and see what happens in MS Edge.</p>
    <label>
        <input type="checkbox" name="remember" v-model="remember">
      <span>Remember Me</span>
    </label>
  </div>
  <script>
    var app = new Vue({
      el: '#app',
      data: {
        remember: false
      },
      methods : {
        check () {
          this.remember = true
        }
      },
      // Hooks
      mounted () {
        this.check()
      }
    })
  </script>
</body>
</html>

编辑: 我没想到要提到这个......但值得注意的是,将 this.check() 包装在 setTimeout 中允许它工作,但对我来说需要延迟到 > 60。所以这修复了它,但显然真的很 hacky,不应该需要。

mounted () {
  setTimeout(() => {
    this.check()
  }, 120)
}

最佳答案

我现在有点猜测。

v-model 是输入事件的缩写。 但原生复选框会在单击时发出更改事件。

如果我的看法是正确的,那么以下应该有效:

<input type="checkbox" name="remember" :checked="remember ? 'checked': '' @change=remember = !remember">

更新: 还将您的数据部分更改为:

data () {
  return {
    remember: false
  }
}

否则它可能会干扰该组件的其他实例。

关于javascript - Mounted 上的 Vue 复选框在 Edge 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55302799/

相关文章:

javascript - 在网页中嵌入 Excel

javascript - 在没有文本对齐对齐属性的情况下对齐多语言文本

javascript - Angular 4 node_modules

javascript - 视觉 : Trouble retrieving cookie and passing into request

vmware - 无法从 Edge 访问本地虚拟机上托管的网站

javascript - 来自 JSON 的 CSS 样式

javascript - 如何在 Vue 3 中使用 Vue.prototype 或全局变量?

javascript - Vue.js - 内联调用异步方法

raspberry-pi - 树莓派上的 Edge 浏览器?

使用适用于 Windows 10+ Mobile 的 UPLOAD 进行视频捕获