vuejs + vue-class-component如何生成通用的setter和getter?

时间:2019-06-18 20:49:34

标签: vue.js vue-component vue-class-components

是否有一种方法可以将通用的getter / setter函数传递给v-model,这样我就不必为在vue-class-component中传递的prop中的每个属性重复自己的工作?

设置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的getter和setter?

0 个答案:

没有答案