조건부로 Select Input 값 변경 방지
다음 vue 컴포넌트가 있습니다.
<template>
<div id="OrderTypeSelect" class="order-type-select">
<b-form-select v-model="curDocType" :options="options" class="mb-3">
</b-form-select>
</div>
</template>
선택한 입력 값은 다음과 같이 Vuex 저장소에 바인딩됩니다.
computed: {
curDocType: {
get () {
return this.$store.state.curDocType
},
set (value) {
this.$store.commit('setcurDocType', value)
}
}
}
내가 이해할 수 없는 것은 선택값의 변경을 조건부로 방지하는 방법이다.저도 해봤어요.
computed: {
curDocType: {
get () {
return this.$store.state.curDocType
},
set (value) {
if (this.$store.state.curOrder == ""){
this.$store.commit('setcurDocType', value)
}
else{
console.log("Debe descartar");
this.curDocType.get() //This throws error!
}
}
}
}
스토어에 값을 커밋하지 않아도 입력 필드의 값이 변경됩니다.
전화해야겠다get()
상태가 트리거되었을 때 이 바인딩을 영속적으로 하려면 , 다음의 순서를 실행합니다.
if (this.$store.state.curOrder != "") {
//Do not modify store and return the input selection to it's previous value
}
당신의 경우 데이터 오브젝트 아이템을 사용하는 것을 추천합니다.curDocType
계산 속성을 사용하지 않고 시청합니다.
<b-form-select v-model="curDocType" :options="options" class="mb-3">
data 객체:
data(){
return{
curDocType:this.$store.state.curDocType
};
}
watch 속성:
watch:{
curDocType(newval,oldval){
if (this.$store.state.curOrder == ""){
this.$store.commit('setcurDocType', newval)
}else{
this.$nextTick(() => {this.curDocType=this.$store.state.curDocType})
}
}
}
해라<b-form-select v-model="curValue" @input="setValue" :options="options" class="mb-3">
어디에curValue
는 변수입니다.data
그리고.setValue
방법은 다음과 같습니다.
methods: {
setValue(value) {
if (this.$store.state.curOrder == "") {
this.$store.commit('setcurDocType', value)
this.curValue = value
} else {
console.log("Debe descartar");
this.$nextTick(() => {this.curValue = this.$store.state.curDocType})
}
}
}
언급URL : https://stackoverflow.com/questions/53744584/prevent-select-input-value-change-conditionally
'programing' 카테고리의 다른 글
Ajax 성공 이벤트가 작동하지 않음 (0) | 2022.09.26 |
---|---|
페이지가 완전히 로드되었을 때 기능을 실행하는 방법은 무엇입니까? (0) | 2022.09.26 |
Java 키스토어의 PEM 포맷으로의 변환 (0) | 2022.09.26 |
출발지가 Access-Control-Allow-Origin에서 허용되지 않습니다. (0) | 2022.09.26 |
MariaDB 복제가 오류 없이 중단됨 (0) | 2022.09.26 |