vuejs + vue-class-component Как генерировать общие сеттеры и геттеры? - PullRequest
0 голосов
/ 18 июня 2019

Есть ли способ передать универсальную функцию получения / установки в v-модель, чтобы мне не приходилось повторять себя для каждого свойства в пропуском, который я передаю в vue-class-component?

установить checkA, установить checkB, установить checkC, получить checkA, получить checkB, получить checkC

За исключением названия свойства, они в основном идентичны

Код для контекста:

<template>
<div>
    <v-checkbox
    v-model="checkA"
    label="A"/>
  <v-checkbox
    v-model="checkB"
    label="B"/>
  <v-checkbox
    v-model="checkB"
    label="C"/>
</div>
</template>

<script>
  interface Options {
    A: boolean;
    B: boolean;
    C: boolean;
  }

  export default class FooClass extends FooClassComponent {
    @Prop({type: Options, required: true})
    private options!: Options
    get checkA() {
      return this.options.checkA;
    }

    set checkA(checkA: boolean) {
      this.setOptions(
      Object.assign(new Options(), this.options, {
        checkA,
      }),
    );
    }

    get checkB() {
      return this.options.checkB;
    }

    set checkB(checkB: boolean) {
      this.setOptions(
      Object.assign(new Options(), this.options, {
        checkB,
      }),
    );
    }

    get checkC() {
      return this.options.checkC;
    }

    set checkC(checkC: boolean) {
      this.setOptions(
      Object.assign(new Options(), this.options, {
        checkC,
      }),
    );
    }
  }
</script>

Есть ли дополнительное свойство или какой-либо более похожий на vue способ, которым я могу установить, чтобы он определял, как генерировать геттеры и сеттеры, подобные proxy ?

...