twitter-bootstrap - 在 Vue 中,v-绑定(bind)不适用于 Bootstrap Toggle Checkboxes 的 "checked"属性?

标签 twitter-bootstrap vue.js

<input type="checkbox" data-toggle="toggle" id="id2" :checked="foo.bar">

上面的代码行应在 foo.bar ( bool 值)为 1 时检查输入,并在 foo.bar 为 0 时取消选中该框,但是当值为 1 时,它从不选中该框。

当我从上一行代码中删除 data-toggle="toggle" 时,它工作得很好,但这使得显示显示为一个无聊的复选框,而不是一个整洁的 Bootstrap 切换,所以这对我来说不是一个可能的解决方法。我正在使用最新版本的 bootstrap-toggle,我的文件中包含以下代码:

<link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
<script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>

此外,如果我将 "foo.bar" 显式替换为 "1",即使使用 data-toggle="toggle",也会选中该框“ 留在其中。这让我认为 Vue 和 Bootstrap Toggle 的交互方式存在一些问题。有谁知道这个错误是什么原因造成的吗?

最佳答案

在这种情况下你需要手动处理。

首先,您需要通过添加 ref 属性来获取对复选框元素的引用:

<input type="checkbox" ref="checkbox" :checked.prop="foo.bar">

然后您需要创建一个观察程序来手动更新切换插件的值:

watch: {
    'foo.bar': function(enabled) {
        $(this.$refs.checkbox).bootstrapToggle(enabled ? 'on' : 'off')
    }
},

为了保持数据双向同步,您需要在 mounted 回调函数中添加一个 change 事件监听器,该函数检测是否单击了切换,然后更新相应的 foo.bar 的值。

mounted: function() {
      $(this.$refs.checkbox).bootstrapToggle().change(function(e) {
        this.foo.bar = $(e.target).prop('checked');
      }.bind(this));
},

请参阅此 JS Fiddle 以获得完整的演示: https://jsfiddle.net/eywraw8t/169950/

关于twitter-bootstrap - 在 Vue 中,v-绑定(bind)不适用于 Bootstrap Toggle Checkboxes 的 "checked"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51315860/

相关文章:

javascript - 单击模态内的 div 时隐藏 Bootstrap 模态

javascript - 如何将 vue 项目提供给网络上的其他计算机

vue.js - 如何在vue3中实现去抖动

php - 为 laravel SPA 生成动态 csrf-token

html - 如何在更改屏幕大小时自动将网格的行内容居中

html - 在 Bootstrap 行的链接中包装图像

javascript - v-for 与子对象

laravel - 如何在VueJs中访问axios中的 `PromiseValue` `response`

html - 如何更新 Bootstrap 进度条。

html - 带有 Bootstrap 的自定义布局,表单缺乏响应能力