У меня есть свойство массива:
arrayList: {
type: Array,
value:[
{id:"1",candy:"Reeces"},
{id:"1",candy:"M&M"},
{id:"1",candy:"KitKat"},
{id:"1",candy:"Twizzlers"}
]
}
и логическое свойство
forceRerender: {
type: Boolean,
value: false
}
Я вызываю их вDom-Repeat для заполнения HTML:
<template is="dom-repeat" as="candy" items="[[getCandyList(arrayList, forceRerender)]]">
<div id="[[candy.id]]" class="candy-row" data="[[candy]]" on-tap="selectCandy">
</template>
Функция selectCandy()
выглядит следующим образом:
selectCandy(event) {
let arr = this.arrayList;
for(let j = 0, i = 0; j < arr.length; j++) {
if(arr[j].select) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
}
}
this.set('forceRerender', !this.forceRerender);
}
И мойgetter:
getCandyList(arr,forceRerender) {
return arr;
}
My selectCandy()
эффективно переставляет arrayList
, но визуально не обновляет содержимое HTML, чтобы представить это.Кажется, я не могу понять, почему.
Я создал отдельный массив и использовал его для изменения значений.Я сделал локальный массив и подтолкнул к нему и вернул его.Я переписал порядок, в котором все сделано.Разделил разделы вверх несколько раз, чтобы просмотреть каждую часть в отдельности.
Я занимался этим по крайней мере 3 часа, и я потерян.Не может ли кто-нибудь объяснить мне, что я делаю не так?