使用插件时,vue双向数据绑定的问题

描述:

在使用vue练习demo时,将组件(如input标签)通过v-model与data中的属性绑定,改变组件的值,data中对应属性的值也跟着变化。
但是使用其他表单插件时,通过上述方法绑定,data中对应属性并没有发生变化,页面上监听组件的值,发现值已经改变,为何通过v-model绑定的对应属性没有变化呢?试了下需要通过change事件触发,在change事件中将组件变化后的值赋给对应属性...

<div id="tableInfo">
   <label>币种</label>
   <div>
     <input id="currency"  v-model="formData.currency"/>
     <span>{{formData.currency}}</span>
   </div>
</div>
<div>
    <input id="test" v-model="formData.test">
    <span>{{formData.test}}</span>
</div>

通过v-model将组件和data中的属性绑定,js代码如下:
结果如图:$("#currency").val() 有值,vm.formData.currency 为空

//实例化vue
vm=new Vue({
    el:'#tableInfo',
    data:{
        formData : {
            opportunityId:'',
            companyId:'',
            occurredDate:'',
            currency:'',
            applicationBy:getCurrentUserId(),
            test:''
        }
    },
    methods:{}
});

$('#currency').select2Ext({
    placeholder : '请选择币种',
    width:'100%',
    data:lookupFormater(currencyData)
});

vm.data中的值没有更新

添加change事件,vm.formData值更新了,如图。

//使用change事件触发:
$('#currency').select2Ext({
    placeholder : '请选择币种',
    width:'100%',
    data:lookupFormater(currencyData)
}).on('change',function(){
    vm.formData.currency  = evt.target.value;
});

vm.data中的值更新了

问题:既然属性对应的组件值$("#currency").val()已经改变,vm.formData.currency的值为何没有同时更新呢?已经通过v-model进行数据绑定了啊,为何还需要通过change事件触发,再赋值啊?

阅读 3.6k
1 个回答

clipboard.png

但 v-model 本质上不过是语法糖,**它负责监听用户的输入事件以更新数据**,并特别处理一些极端的例子

http://cn.vuejs.org/v2/guide/...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题