У меня есть страница, на которой пользователь может перетаскивать изображения в предварительно определенные DIV, а затем подсчитывать общее значение изображений на основе их имени класса.То, что я пытаюсь сделать, это получить vue, чтобы прочитать значения из каждого внешнего div.answer
и получить имена классов дочерних изображений.
Мой исходный код:
<div
is="box-answers"
v-for="box in boxes.slice().reverse()"
v-bind:key="box.id"
v-bind:level="box.level"
v-bind:hint="box.hint"
></div>
<script>
Vue.component('box-answers', {
props: ['level','hint'],
template: '<div class="droppable answer :id="level" :title="hint"></div>'
});
new Vue({
el: '#mainapp',
data: {
boxes: [
{ id: 1, level: 'baselevel-1', hint: 'x 1' },
{ id: 2, level: 'baselevel-2', hint: 'x 20' },
{ id: 3, level: 'baselevel-3', hint: 'x 400' },
{ id: 4, level: 'baselevel-4', hint: 'x 8,000' },
{ id: 5, level: 'baselevel-5', hint: 'x 160,000' }
]
}
</script>
Этопреобразует в следующий HTML-код (вложенные DIV и SPAN являются пользовательскими записями путем перетаскивания):
<div id="baselevel-5" class="droppable answer" title="x 160,000">
<div><img src="images/line.gif" alt="Five" class="imgfive"></div>
<span><img src="images/dot.gif" alt="One" class="imgone"></span>
</div>
...
<div id="baselevel-1" class="droppable answer" title="x 1">
<span><img src="images/line.gif" alt="One" class="imgone"></span>
</div>
В настоящее время у меня есть jQuery / JavaScript для вычисления значений точек с использованием следующего:
$(function(j) {
var arAnswers = Array(1);
count = 0; //
j("div.answer").each(function( idx ) {
currentId = j(this).attr('id');
ones = 0;
fives = 0;
if ( j("#" + currentId).children().length > 0 ) {
ones = j("#" + currentId).children().find("img.imgone").length * 1;
fives = j("#" + currentId).children().find("img.imgfive").length * 5;
arAnswers[count] = ones + fives; //Tally box value
count++;
}
});
});
Я бы хотел, чтобы Vue выполнил аналогичную итерацию и сложение, чтобы получить общее значение, найденное из единиц и пятерок, на основе имени класса изображения.