現在、私はボタンをクリックして2つの入力のセットを作成できるVueJSアプリケーションを持っています。これらの2つの入力は、キーアップ時に簡単な数学関数を実行します。これらの数学関数は、1組の入力で機能します。しかし、私はdocument.getElementByIdを使用して入力を取得しているので、入力の最初のセットでのみ機能します。この数学関数を個別に実行できるように、各入力セットを一意に識別できる方法はありますか?VueJSは特定の入力セットで数学関数を実行します
例:Vueので
Vue.component('product', {
template: `
<div>
<select>
<option>Product One</option>
<option>Product Two</option>
</select>
<input class="input" id="bags" @keyup="$emit('calculatevolume')" type="number" placeholder="Bags">
<input class="input" id="volume" @keyup="$emit('calculatebags')" type="number" placeholder="Volume">
<button @click="$emit('remove')">Delete</button>
</div>
`
})
new Vue({
el: '#app',
data: {
index: 0,
products: []
},
methods: {
addProduct: function() {
this.products.push(this.index);
this.index++;
},
calculatevolume: function() {
var inputs = document.querySelectorAll(".input");
var bags = document.getElementById("bags");
var volume = document.getElementById("volume");
volume.value = bags.value * 25;
},
calculatebags: function() {
var inputs = document.querySelectorAll(".input");
var bags = document.getElementById("bags");
var volume = document.getElementById("volume");
bags.value = volume.value/25;
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.6/vue.min.js"></script>
<div id="app">
<button
v-model="index"
v-on:click="addProduct"
placeholder="Add Product">Add Product</button>
<div class="products">
<div
is="product"
v-for="(product, index) in products"
:id="index"
:key="product"
@remove="products.splice(index, 1)"
@calculatevolume="calculatevolume"
@calculatebags="calculatebags">
</div>
</div>
</div>
代わりに入力フィールドでv-modelを使用してみませんか? – wostex
私はその文書を読みました。間違いなく、正しい方向の一歩のように見えます。私はまた、私は自分のIDで要素をつかむことになっているとは思わない、2つの異なるメソッドのために同じ変数を2回作成することはもちろん。これは、グローバル変数を動作させることができなかったため、テスト目的のためのものでした。 – nicholasdrzewiecki