2017-01-23 11 views
1

私はVueで新しく、私は何かについて疑問を持っています。さて、私たちがクリックイベントを処理する方法については、Vue and jQueryには疑問があります。私の場合、この時点で、jQueryはより簡単に実現できるように見えます。VueJSとjQueryのハンドルをクリック

私達はちょうどそれを行うjQueryので

はHTML:

<div class="jquery-radio"> 
Radio 1 <input type="radio" name="radio" class="choose-radio" value="Radio1" checked> 
<br> 
Radio 2 <input type="radio" name="radio" class="choose-radio" value="Radio2"> 

をjQueryの

$('.choose-radio').click(function() { 
$('.choose-radio:checked').val() == 'Radio1' ? alert('Radio 1') : 
$('.choose-radio:checked').val() == 'Radio2' && alert('Radio 2 '); 
}); 

だから、私の疑問があります。 Vueを使ってこれを達成する方法は?私はこれを実行しようとしましたが、私が言ったように、jQueryのは、(クラス)の要素を選択するのではなく、私はちょうど私がやりたい@click="myMethod()"を追加しているため、よりシンプルであるように思わ$('.choose-radio);

HTML:

<div class="jquery-radio"> 
Radio 1 <input type="radio" name="choose-radio-vue" class="choose-radio-vue" value="Radio1" checked @click="showRadio1()"> 
<br> 
Radio 2 <input type="radio" name="choose-radio-vue" class="choose-radio-vue" value="Radio2" @click="showRadio2()"> 

Vueの

var app = new Vue ({ 
    el: ".jquery-radio", 
    methods: { 
     showRadio1: function() { 
      alert("Show 1"); 
     }, 
     showRadio2: function() { 
      alert("Show 2"); 
     } 
    } 
    }); 

Check Fiddle

これらの例は基本的なものです。私のプロジェクトでは、ラジオで以前に選択した値に基づいて、さまざまなセクションを表示します。私はVueで本当に混乱しています。

あなたは私のためにこの情報を明確にすることができますように!

+0

多分それは好みの問題ですが、あなたのjQueryのコードはawefull ;-) – Gerfried

+0

はい、私は知っています。しかし、この質問の目的は、ベスト・プラクティスなどではなく、Vueの詳細を理解することです。それ以外の場合は、全く別の質問でCode Reviewに入れる必要があります。 @Gerfried –

+0

正確なユースケースを達成したいものに追加できますか? – Saurabh

答えて

1

同じハンドラを追加してイベントオブジェクトを渡すことができます。このオブジェクトを後で使用して現在の要素を取得できます。ここでは作業例を示します。

var app = new Vue ({ 
 
    el: ".jquery-radio", 
 
    methods: { 
 
     show: function(event) { 
 
      var value = event.target.value 
 
      
 
      console.log(value) 
 
     } 
 
    } 
 
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.min.js"></script> 
 

 
<div class="jquery-radio"> 
 
    Radio 1 
 
    <input type="radio" name="choose-radio-vue" class="choose-radio-vue" value="Radio1" checked @click="show($event)"> 
 
<br> 
 
    Radio 2 
 
    <input type="radio" name="choose-radio-vue" class="choose-radio-vue" value="Radio2" @click="show($event)"> 
 
</div>

PS:.choose-radioクラスを持っているより多くの要素がある場合、それはエラーをもたらす可能性としても、あなたのjQueryのアプローチは、はるかに最適からです。あなたが必要とするものは次のようなものです:

$('.choose-radio').click(function() { 
    var value = $(this).val() // value of the selected object 
}); 
0

これはかなり異なる考え方です。 Vueでは、データを変更してVueにDOM操作を処理させます。私はv-modelを使用し、それに基づいてセクションの表示を切り替えます。

new Vue({ 
 
    data: { 
 
    section: 'Radio 1' 
 
    } 
 
}).$mount('#app')
label { 
 
    display: block; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.10/vue.js"></script> 
 
<div id="app"> 
 
    <label><input name="section" type="radio" v-model="section" value="Radio 1"> One</label> 
 
    <div v-if="section === 'Radio 1'"> 
 
    Radio One Is Selected! 
 
    </div> 
 

 
    <label><input name="section" type="radio" v-model="section" value="Radio 2"> Two</label> 
 
    <div v-if="section === 'Radio 2'"> 
 
    Radio Two Is Selected! 
 
    </div> 
 

 
    <label><input name="section" type="radio" v-model="section" value="Radio 3"> Three</label> 
 
    <div v-if="section === 'Radio 3'"> 
 
    Radio Three Is Selected! 
 
    </div> 
 
</div>

+0

'-1'の場合は、コメントを残して理由を教えてください。 –

+0

答えは良いとcorrect.Itはdownvoterから何が間違っている説明するためにいいですので、私はこのdownvoteをリセットする+1を与えた:) –

関連する問題