我希望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;
}
}
}
工作案例:
不工作的情况(没有重新计算):
我很抱歉没有为这种情况创建repro(复制导致此问题的组件,它的依赖关系和环境)需要很长时间。如果您在没有 repro 的情况下无法理解这里有什么问题,请教我影响 Vue 计算属性是否会重新计算。