v-model이 변경 될 때 이벤트를 발생시키는 방법은 무엇입니까? (vue js)
나는를 사용하여 foo()
기능을 실행 하려고하는데 @click
, 알 수 있듯이 이벤트를 올바르게 실행하려면 라디오 버튼을 두 번 눌러야합니다. 두 번째로 누를 때만 값을 잡습니다.
(srStatus)가 변경 @click
될 때만 이벤트를 시작하지 않고 이벤트를 시작하고 싶습니다 v-model
.
여기 내 바이올린이 있습니다.
http://fiddle.jshell.net/wanxe/vsa46bw8/
이는 click
라디오 버튼의 값이 변경되기 전에 핸들러가 실행되기 때문에 발생합니다 . change
대신 이벤트 를 수신해야합니다 .
<input
type="radio"
name="optionsRadios"
id="optionsRadios2"
value=""
v-model="srStatus"
v-on:change="foo"> //here
또한, 정말로 foo()
준비 상태 로 전화하고 싶은지 확인하십시오 ... 실제로 그렇게하고 싶지 않은 것 같습니다.
ready:function(){
foo();
},
v-on
지시문 을 제거하여 실제로 이것을 단순화 할 수 있습니다 .
<input type="radio" name="optionsRadios" id="optionsRadios1" value="1" v-model="srStatus">
그리고 watch
방법을 사용하여 변경 사항을 수신하십시오.
new Vue ({
el: "#app",
data: {
cases: [
{ name: 'case A', status: '1' },
{ name: 'case B', status: '0' },
{ name: 'case C', status: '1' }
],
activeCases: [],
srStatus: ''
},
watch: {
srStatus: function(val, oldVal) {
for (var i = 0; i < this.cases.length; i++) {
if (this.cases[i].status == val) {
this.activeCases.push(this.cases[i]);
alert("Fired! " + val);
}
}
}
}
});
Vue2 : 입력 흐림의 변화 만 감지하려면 (예 : Enter를 누르거나 다른 곳을 클릭 한 후) 수행하십시오 (자세한 내용은 여기 ).
<input @change="foo" v-model... >
단일 문자 변경을 감지하려면 (사용자 입력 중)
<input @keydown="foo" v-model... >
@keyup
및 @input
이벤트를 사용할 수도 있습니다 . 추가 매개 변수를 전달하려면 템플릿에서 사용하십시오 @keyDown="foo($event, param1, param2)"
. 아래 비교 ( 여기에서 편집 가능한 버전 )
new Vue({
el: "#app",
data: {
keyDown: { key:null, val: null, model: null, modelCopy: null },
keyUp: { key:null, val: null, model: null, modelCopy: null },
change: { val: null, model: null, modelCopy: null },
input: { val: null, model: null, modelCopy: null },
},
methods: {
keyDownFun: function(event){ // type of event: KeyboardEvent
console.log(event);
this.keyDown.key = event.key; // or event.keyCode
this.keyDown.val = event.target.value; // html current input value
this.keyDown.modelCopy = this.keyDown.model; // copy of model value at the moment on event handling
},
keyUpFun: function(event){ // type of event: KeyboardEvent
console.log(event);
this.keyUp.key = event.key; // or event.keyCode
this.keyUp.val = event.target.value; // html current input value
this.keyUp.modelCopy = this.keyUp.model; // copy of model value at the moment on event handling
},
changeFun: function(event) { // type of event: Event
console.log(event);
this.change.val = event.target.value; // html current input value
this.change.modelCopy = this.change.model; // copy of model value at the moment on event handling
},
inputFun: function(event) { // type of event: Event
console.log(event);
this.input.val = event.target.value; // html current input value
this.input.modelCopy = this.input.model; // copy of model value at the moment on event handling
}
}
})
div {
margin-top: 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
Type in fields below (to see events details open browser console)
<div id="app">
<div><input type="text" @keyDown="keyDownFun" v-model="keyDown.model"><br> @keyDown (note: model is different than value and modelCopy)<br> key:{{keyDown.key}}<br> value: {{ keyDown.val }}<br> modelCopy: {{keyDown.modelCopy}}<br> model: {{keyDown.model}}</div>
<div><input type="text" @keyUp="keyUpFun" v-model="keyUp.model"><br> @keyUp (note: model change value before event occure) <br> key:{{keyUp.key}}<br> value: {{ keyUp.val }}<br> modelCopy: {{keyUp.modelCopy}}<br> model: {{keyUp.model}}</div>
<div><input type="text" @change="changeFun" v-model="change.model"><br> @change (occures on enter key or focus change (tab, outside mouse click) etc.)<br> value: {{ change.val }}<br> modelCopy: {{change.modelCopy}}<br> model: {{change.model}}</div>
<div><input type="text" @input="inputFun" v-model="input.model"><br> @input<br> value: {{ input.val }}<br> modelCopy: {{input.modelCopy}}<br> model: {{input.model}}</div>
</div>
위의 정답에 추가하기 위해 Vue.JS v1.0에서 다음과 같이 작성할 수 있습니다.
<a v-on:click="doSomething">
따라서이 예에서는
v-on:change="foo"
참조 : http://v1.vuejs.org/guide/syntax.html#Arguments
다음을 사용해야합니다 @input
.
<input @input="handleInput" />
@input
사용자가 입력 값을 변경할 때 발생합니다.
@change
사용자가 값을 변경하고 입력 초점을 해제하면 실행됩니다 (예 : 외부에서 클릭).
You can see the difference here: https://jsfiddle.net/posva/oqe9e8pb/
참고URL : https://stackoverflow.com/questions/33257379/how-to-fire-an-event-when-v-model-changes-vue-js
'Programing' 카테고리의 다른 글
PHP 메일러를 통해 Gmail SMTP 서버를 사용하여 이메일 보내기 (0) | 2020.10.26 |
---|---|
AndroidStudio에서 Java SDK 경로를 설정하는 방법은 무엇입니까? (0) | 2020.10.26 |
자주 실행되도록 작업을 어떻게 설정합니까? (0) | 2020.10.26 |
C ++ 파일 스트림 (fstream)을 사용하여 파일 크기를 어떻게 결정할 수 있습니까? (0) | 2020.10.26 |
C는 오픈 소스입니까? (0) | 2020.10.26 |