У меня есть список изображений (например, галерея).Длинное нажатие (я использую Nativescript-vue) на изображении изменит стиль изображения и сделает его «выбранным».Это изображение:
<ListView layout="grid" ref="backedupImages" for="image in sortedBackedupImages">
<v-template>
<ImageComponent
v-bind:style="{backgroundColor:isSelected(image.identifier) ? 'cyan' : 'white'}"
:onLongPress="()=>{onLongPress(image.identifier)}"
:onShortPress="()=>{onShortPress(image.identifier)}"
:image="image"
></ImageComponent>
</v-template>
</ListView>
Как видите, я вызываю какой-то метод isSelected, чтобы проверить, выбрано ли изображение или нет.Метод находится в mixin:
isSelected(identifier){
const isSelected = this.selectedImages.includes(identifier);
return isSelected
}
Это метод onLongPress, который переключает состояние выбора изображения:
onLongPress(identifier) {
if(this.selectedImages.includes(identifier)){
const index = this.selectedImages.indexOf(identifier);
this.$delete(this.selectedImages,index);
}else{
const index = this.selectedImages.length;
this.$set(this.selectedImages,index,identifier);
}
},
Кажется, что манипулирование массивом работает, но я не получаюлюбой вид реактивности.В чем может быть проблема?Есть ли лучший подход для этого в Vue?Я не думаю, что могу использовать вычисляемое свойство, поскольку мне нужно передать аргумент в «вычисление».