私はでfoo()
関数を@click
起動しようとしていますが、ご覧のとおり、イベントを正しく起動するには、ラジオボタンを2回押す必要があります。2回目に押すだけで値をキャッチします...
(srStatus)が変更された@click
ときにイベントを発生させるだけでなく、イベントを発生させたいv-model
。
ここに私のフィドルがあります:
私はでfoo()
関数を@click
起動しようとしていますが、ご覧のとおり、イベントを正しく起動するには、ラジオボタンを2回押す必要があります。2回目に押すだけで値をキャッチします...
(srStatus)が変更された@click
ときにイベントを発生させるだけでなく、イベントを発生させたいv-model
。
ここに私のフィドルがあります:
foo()
テンプレート以外の変更を行うことである場合は、aを使用しますwatcher
回答:
これ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);
}
}
}
}
});
あなたは使うべきです@input
:
<input @input="handleInput" />
@input
ユーザーが入力値を変更したときに発生します。
@change
ユーザーが値を変更して入力のフォーカスを外したときに発生します(たとえば、外のどこかをクリックしたとき)
ここで違いを確認できます:https : //jsfiddle.net/posva/oqe9e8pb/
上記の正解に追加するだけで、Vue.JS v1.0では次のように書くことができます
<a v-on:click="doSomething">
したがって、この例では
v-on:change="foo"