Jsfiddle

HTML:

<div id="testVue">

<input id="test" v-model="testModel"/>

<button @click="clickMe()">Click me</button>

<button @click="showValue()">Show value</button>

</div>

Javascript

var testVue = new Vue({
  el: '#testVue',

  data: {
    testModel: 'Hello Vue!'
  },

  methods: {

    clickMe: function() {
        $("#test").val("testing");
        console.log(this.testModel);
    },

    showValue: function() {
        console.log(this.testModel);
    }
  }
});

我完全明白我不应该在Vuejs $("#test").val("testing");中这样做,我应该像this.testModel="testing";那样做

但我不明白为什么这个基本绑定在Vuejs中不起作用?我有很多HTML组件可以通过jquery更新输入框,例如Calendar、Autocomplete和Select2,它们都会通过非vuejs的方式更新输入框.

有什么简单的方法处理吗?

推荐答案

最好的方法是让jQuery更改数据,而不是输入val,以保持所有内容的同步.

这样地:

let mainState = { inputVal: 'testing' };

let app = new Vue({
  el: '#app',
  data: mainState,
  methods: {
    vueThing() {
      this.inputVal = 'Vue value';
    }
  }
}); 

$('#jqThing').on('click', function() {
  mainState.inputVal = 'jQuery Value';
});

https://jsfiddle.net/6evc921f/

或者将jQuery元素构造函数包装在Vue组件中,只在Vue增强的页面中使用它们

Vue.js相关问答推荐

在vuejs中使用表单追加时如何使用布尔值

有没有办法将react 键作为值传递给由 v-for 创建的 v-model

Vue Js Composition Api 未定义(读取名称)

何时将代码拆分为 Nuxt 中的组件?

vuex 未知动作类型:addTodo

在 dom 内移动 Vue 组件?

Vuex 和 Event Bus 有什么区别?

Express.js + lint 出错

为什么 Vue 路由/Webpack 开发服务器现在在页面刷新时显示无法获取/路径?

Vue @click 不适用于存在 href 的anchor锚标记

v-for 中的 VueJS 插槽

如何从 vue.js 中的自定义组件中冒泡点击事件?

使用 Vue.js 的用户可切换自定义主题

Vuejs模板继承

如何在 Vue 中转发 $refs

我可以修改 Vue.js VNodes 吗?

如何在 Vue3 设置标签中定义组件名称?

模块构建失败:错误:没有给出解析器和文件路径,无法在 nuxtjs 中推断出解析器

Vue.js 的 $emit 和 $dispatch 有什么区别?

如何让 vuetify 数据表在卡片内时跨越容器的整个宽度?