javascript - 触发更改不会更新 vuejs 绑定(bind)

标签 javascript jquery html jquery-chosen vue.js

如果您更改第一个下拉列表中的值,它可以正常工作,但不能在第二个下拉列表中工作。请参阅下面的示例。

var vm = new Vue({
  el: '#app',
  data: {
    fruits: ['Apple', 'Banana', 'Orange']
  },
  ready: function() {
    $('.chosen-select').chosen({ width: '20%' });
  },
  watch: {
    fruits: function () {
       $('.chosen-select').trigger('chosen:updated');
    }
  }
});
.chosen-select{ display: initial !important } // for debuging purpose
<link href="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chosen/1.4.2/chosen.jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.17/vue.min.js"></script>
<div id="app">
  <select class="chosen-select" v-model="fruit">
    <option v-for="fruit in fruits" v-bind:value="fruit" v-text="fruit"></option>
  </select>
  <p>You like {{fruit}}</p>
</div>

最佳答案

所选插件正在创建一个新的下拉列表,因此 Vue 无法正确监视它。您必须在选择的 change 事件中手动更改 Vue:

var vm = new Vue({
  el: '#app',
  data: {
    fruit:"Apple",
    fruits: ['Apple', 'Banana', 'Orange']
  },
  ready: function() {
    $('.chosen-select').chosen({ width: '20%' }).change(function(e){
      this.fruit = e.currentTarget.value;
    }.bind(this));
  }
});

fiddle :https://jsfiddle.net/89sbqy3b/

关于javascript - 触发更改不会更新 vuejs 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36035934/

相关文章:

css - 在 css 中将 float 定义为中心

javascript - 使用 Angular 有条件地隐藏 Bootstrap 工具提示内的文本内容

javascript - 当事件监听器添加到另一个事件中时,获取事件源(带有附加监听器的节​​点)

javascript - 如何使div在事件发生时滑动到窗口底部

javascript - 以不同的速度滚动 div

javascript - 从多个克隆的 div 中获取特定的 h3

javascript - Google API - 将字符串翻译成 EN 语言 :(

javascript - this.type ='password' 在 IE 中不起作用,但它在所有其他浏览器中都起作用

javascript - jsp中如何通过点击href标签传递数据

div 的 JavaScript 随机边距仅适用于第一个 div