Я ожидаю, что currentSelectionViewContent
будет пересчитываться каждый раз при изменении selectedOptionsIndexes
. Действительно, иногда работает, иногда - нет.
import { Component, Prop, Vue, Watch } from "vue-property-decorator";
@Component({
template
})
export class SelectField extends Vue {
private onNewOptionSelected(newOption: SelectField.Option, indexInArray: number): void {
console.log("~~~~~~~~~~~~~~~");
console.log(JSON.stringify(this.selectedOptionsIndexes, null, 2));
this.selectedOptionsIndexes[0] = indexInArray;
console.log(JSON.stringify(this.selectedOptionsIndexes, null, 2));
console.log("--------------");
if (isUndefined(newOption.key)) {
this.$emit("change", newOption.relatedEntity);
} else {
this.$emit("change", newOption.key);
}
}
// Vue computed property in "vue-property-decorator" syntax
private get currentSelectionViewContent(): string {
console.log("Recomputing ...");
switch (this.selectedOptionsIndexes.length) {
case 0:
return SelectField.DEFAULT_NOTHING_SELECTED_PLACEHOLDER;
case 1:
return this.selectOptions[this.selectedOptionsIndexes[0]].title;
default:
return SelectField.DEFAULT_MULTIPLE_OPTIONS_SELECTED_LETTERING;
}
}
}
Рабочий случай:
![enter image description here](https://i.stack.imgur.com/jKlph.png)
Not working case (no re-computing):
введите описание изображения здесь
К сожалению, не было создано репро для этого случая (воспроизведение компонента, вызывающего эту проблему, его зависимостей, а также среды), занимает слишком много времени. Если вы не можете понять, что здесь не так, без воспроизведения, пожалуйста, просто научите меня, что влияет на волю Vue вычисленное свойство повторно вычислено или нет.