이 글에서는 Vue가 타사 datepicker 플러그인을 사용할 때 datepicker 입력 상자의 값을 모니터링할 수 없는 문제에 대한 해결책을 주로 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.
Vue 프로젝트에서는 타사 날짜 선택기 플러그인이 사용되며 Vue는 날짜를 선택한 후 날짜 선택기 입력 상자의 변경 사항을 감지할 수 없습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <label class = "fl" >日期:</label>
<p class = "input-wrapper fr" >
<input class = "daterangepicker" ref= "datepicker" v-model= "dateRange" />
<a href= "javascript:;" rel= "external nofollow" ></a>
</p>
export default {
data() {
return {
dateRange: ''
}
},
watch: {
dateRange(newVal, oldVal) {
console.log(newVal)
}
}
}
|
로그인 후 복사
2. 분석
정보를 검색하면 Vue가 실제로 타사 플러그인으로 인한 데이터 변경을 모니터링할 수 없습니다. 따라서 위의 방법은 작동하지 않습니다. 그러나 Vue는 모든 데이터를 Vue에서 모니터링할 수 있는 데이터로 변환할 수 있는 방법(vm.$set)을 제공합니다.
3. 솔루션
제가 사용하는 날짜 선택기(jquery-daterangepicker)를 예로 들어보세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | data() {
return {
date : '',
beginDate: '',
endDate: ''
}
},
mounted () {
$('.daterangepicker').dateRangePicker({
autoClose: true,
format: 'YYYY-MM-DD'
}).bind('datepicker-change', this.setDate)
},
methods: {
setDate() {
let datepicker = this. $refs .datepicker
this. $set (this. date , 'beginDate', datepicker.value)
this. $set (this. date , 'endDate', datepicker.value)
this.beginDate = this. date .beginDate.slice(0, 11)
this.endDate = this. date .endDate.slice(-10)
}
},
watch: {
beginDate(newVal, oldVal) {
this. $emit ( 'beginDateChange', newVal )
},
endDate(newVal, oldVal) {
this. $emit ( 'endDateChange', newVal )
}
}
|
로그인 후 복사
위 내용은 나중에 모두에게 도움이 되기를 바랍니다.
관련 기사:
WeChat 애플릿에서 이미지 미리보기 기능을 구현하는 방법
jquery를 사용하여 아코디언 효과를 구현하는 방법
WeChat 애플릿에서 3단계 연결 선택기를 사용하는 방법
PHP 클로저 패키지 및 익명 함수(자세한 튜토리얼)
Vue 구성 요소의 사용자 정의 이벤트 정보(자세한 튜토리얼)
JS를 사용하여 마우스 움직임에 따라 공을 구현하는 방법
위 내용은 Vue의 날짜 선택기 플러그인은 날짜 선택기 입력 상자의 값을 모니터링할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!