Vue.js 当javascript函数更新输入时,观察Vue js模型中的变化
我正在使用日期范围选择器选择日期。现在,当我选择日期时,我会分别用日期值更新输入 我用v-model绑定了输入,并在组件的watch属性中创建了一个函数来观察模型中的变化 但是,当使用javascript函数更新输入时,在模型中无法观察到任何更改,但我的输入字段的值会更新Vue.js 当javascript函数更新输入时,观察Vue js模型中的变化,vue.js,Vue.js,我正在使用日期范围选择器选择日期。现在,当我选择日期时,我会分别用日期值更新输入 我用v-model绑定了输入,并在组件的watch属性中创建了一个函数来观察模型中的变化 但是,当使用javascript函数更新输入时,在模型中无法观察到任何更改,但我的输入字段的值会更新 // My Input Fields <input type="text" name="updateStartDate" v-model="updateDateRange.start"> <input t
// My Input Fields
<input type="text" name="updateStartDate" v-model="updateDateRange.start">
<input type="text" name="updateEndDate" v-model="updateDateRange.end">
//My javascript Function
$('input[rel=dateRangePickerX]').daterangepicker({
'autoApply': true,
'drops': 'up',
'startDate': moment().add(90, 'days').calendar(),
'endDate': moment().add(97, 'days').calendar(),
locale: { cancelLabel: 'Clear' }
},
function (start, end, label) {
$('input[name="updateStartDate"]').val(start.format('MM/DD/YYYY'));
$('input[name="updateEndDate"]').val(end.format('MM/DD/YYYY'));
});
// My watch attribute in Component
watch : {
'updateDateRange.end' : function (val) {
console.log('In Watch Function');
console.log(this.dateRanges);
if(val != '' && this.updateDateRange.start != '' && this.updateDateRangeIndex != ''){
console.log(val);
console.log(this.updateDateRange.start);
console.log(this.updateDateRangeIndex);
this.dateRanges[this.updateDateRangeIndex] = this.updateDateRange;
this.updateDateRangeIndex = '';
this.updateDateRange.start = '';
this.updateDateRange.end = '';
console.log(this.dateRanges);
}
}
}
//我的输入字段
//我的javascript函数
$('input[rel=dateRangePickerX]')。daterangepicker({
“自动应用”:true,
“drops”:“up”,
'startDate':矩().add(90,'days').calendar(),
“endDate”:矩().add(97,“天”).calendar(),
区域设置:{cancelabel:'Clear'}
},
功能(开始、结束、标签){
$('input[name=“updateStartDate”]').val(start.format('MM/DD/YYYY');
$('input[name=“updateEndDate”]').val(end.format('MM/DD/YYYY');
});
//组件中的“我的手表”属性
观察:{
'UpdateDataRange.end':函数(val){
console.log('In Watch Function');
console.log(this.dateRanges);
如果(val!=''&&this.updatedTerange.start!=''&&this.updatedTerangeIndex!=''){
控制台日志(val);
log(this.updateDatarange.start);
log(this.updatedTerangeIndex);
this.dateRanges[this.updatedTerangeIndex]=this.updatedTerange;
this.updatedTerangeIndex='';
this.updateDataRange.start='';
this.updateDataRange.end='';
console.log(this.dateRanges);
}
}
}
您需要使用您的模型,而不是摆弄绑定的DOM元素。您已将图元绑定到viewmodel项:
<input type="text" name="updateStartDate" v-model="updateDateRange.start">
<input type="text" name="updateEndDate" v-model="updateDateRange.end">
但您应该改为设置绑定值:
updateDateRange.start = start.format('MM/DD/YYYY');
updateDateRange.end = end.format('MM/DD/YYYY');
您需要使用您的模型,而不是摆弄绑定的DOM元素。您已将图元绑定到viewmodel项:
<input type="text" name="updateStartDate" v-model="updateDateRange.start">
<input type="text" name="updateEndDate" v-model="updateDateRange.end">
但您应该改为设置绑定值:
updateDateRange.start = start.format('MM/DD/YYYY');
updateDateRange.end = end.format('MM/DD/YYYY');
我不喜欢混合使用jQuery和Vue,因为jQuery会弄乱DOM。更何况,我觉得这完全没有必要 只有使用本机Vue,您才可以这样做:
<input type="text" name="updateStartDate" v-model="startDate" @input="onInput()">
<input type="text" name="updateStartDate" v-model="endDate" @input="onInput()">
要进一步设置值并更新DOM,只需更新
startDate
和/或endDate
变量,DOM就会相应地更新。我不喜欢混合使用jQuery和Vue,因为jQuery会弄乱DOM。更何况,我觉得这完全没有必要
只有使用本机Vue,您才可以这样做:
<input type="text" name="updateStartDate" v-model="startDate" @input="onInput()">
<input type="text" name="updateStartDate" v-model="endDate" @input="onInput()">
要进一步设置值并更新DOM,只需更新
startDate
和/或endDate
变量,DOM就会相应地更新。您可能需要强制执行更改
事件:$('input[name=“updateStartDate”].val(start.format('MM/DD/yyyyy')).change()
@RoyJ我试图强制执行,但没有帮助。实际上,当我们触摸输入字段时,模型会更新。您可能需要强制执行更改
事件:$('input[name=“updatestardate”]').val(start.format('MM/DD/yyyyy')).change()
@RoyJ我尝试强制执行,但没有帮助。实际上,当我们触摸输入字段时,模型会更新。