タイトルの通りです。
クラスでなくても良いので共通する属性、属性値が一致する要素が変更された場合、算出プロパティによる同期をしたいというのが目的です。
下記の要素郡があります。
html
1<div id="inputArea"> 2 <input type="number" v-model="item_0" class="im-item" /> 3 <input type="number" v-model="item_1" class="im-item" /> 4 <input type="number" v-model="item_2" class="im-item" /> 5 <input type="number" v-model="item_3" class="im-item" /> 6 <input type="number" v-model="item_sum" readonly /> 7</div>
item_0~3を変更したらitem_sumに算出プロパティで集計後反映したい。
javascript
1//【動作しないがやりたことはこういう感じ】 2// 下記の記述だとitem_0~3の中身が変わっても算出プロパティが動かない。 3vue_calc = new Vue({ 4 el: "#inputArea", 5 data: { 6 item_0 : 0, 7 item_1 : 0, 8 item_2 : 0, 9 item_3 : 0 10 }, 11 computed:{ 12 item_sum: function (){ 13 // 動かないが下記のようなことをやりたい 14 var sum = 0; 15 $('input.im-item').each(function() { 16 sum += Number($(this).val()); 17 }); 18 return sum; 19 }, 20 21 }, 22})
下記の記述だとアウトプット的には期待する動作だが、冗長すぎる。
javascript
1//【動作するが冗長】 2vue_calc = new Vue({ 3 el: "#inputArea", 4 data: { 5 item_0 : 0, 6 item_1 : 0, 7 item_2 : 0, 8 item_3 : 0 9 }, 10 computed:{ 11 item_sum: function (){ 12 // itemが1000個あったら物理的に1000個書かなくてはならない。 13 var sum = 0; 14 sum = (this.item_0 + this.item_1 + this.item_2 + this.item_3); 15 return sum; 16 }, 17 18 }, 19})
一応下記に使用ライブラリを共有します。
・jquery3.3.1
・vue.js2.5.16
こちら、当該問題を解決したくべくヒントを頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。