VueJS 在 v-model 中反转值

VueJS invert value in v-model

这是我的代码:

<input
   v-model="comb.inactive"
   type="checkbox"
   @click="setInactive(comb.id_base_product_combination)"
>

我需要在 v 模型上应用 comb.inactive 的反转。

这是我尝试过的:

<input
    v-model="comb.inactive == 1 ? 0 : 1"
    type="checkbox"
    @click="setInactive(comb.id_base_product_combination)"
>



<input
    v-model="comb.inactive == 1 ? false : true"
    type="checkbox"
    @click="setInactive(comb.id_base_product_combination)"
>

你还有其他想法吗?

您应该执行以下操作:

<input
   v-model="comb.inactive"
   type="checkbox"
   @click="setInactive(comb.id_base_product_combination)"
>
mounted(){
      this.comb['inactive'] = !(this.comb['inactive']);
}

为了更好的练习,您可以使用computed:

<input
   v-model="checkedItem"
   type="checkbox"
   @click="setInactive(comb.id_base_product_combination)"
>
computed: {
      checkedItem: {
        get: function () {
          return !this.comb['inactive'];
        },
        set: function (newVal) {
          console.log("set as you want")
        }
}

如果你想反转 v-model,那么只需制作一个自定义输入组件!

checkbox-inverted

Vue.component('reverse-checkbox', {
  props: ['value', 'label'],
  template: `
    <label>
      <input
        type="checkbox"
        :checked="valueInverse"
        @input="onInputChanged"
      />
      <span>{{label}}</span>
    </label>
  `,
  computed: {
    valueInverse() {
      return !this.value;
    },
  },
  methods: {
    onInputChanged(e) {
      this.$emit('input', this.valueInverse);
    },
  },
});

用法

然后您可以像使用任何其他输入组件一样将其与 v-model 一起使用。 more information about custom inputs here

<reverse-checkbox
  v-model="invertedModel"
  label="This checkbox will show the inverted value"
></reverse-checkbox>

考虑使用 true-valuefalse-value 作为快捷方式:

<input
    v-model="comb.inactive"
    type="checkbox"
    :true-value="false"
    :false-value="true"
>

或者在这种情况下,您可能正在寻找交替整数,您可以直接设置它们。

<input
    v-model="comb.inactive"
    type="checkbox"
    :true-value="1"
    :false-value="0"
>