v-switch在检查时返回False值

时间:2019-03-02 15:54:25

标签: vue.js vuetify.js

我对v-switch有问题。我在一页上有一堆。当我检查其中任何一个时,它将返回错误值。

<v-switch
    :name="['leave_it_' + listItem.asset_id]"
    @change="setAction(listItem)"
></v-switch>

这是我的剧本。

<script>
export default {
  data() {
    return {
      updates: {
        asset_id: [],
        leave_it: {},
        image: {},
        description: {}
      },
    };
  },
  methods: {
    setAction(listItem) {
      var action = (document.querySelector('input[name="leave_it_' + listItem.asset_id + '"]:checked') ? "Leave it Alone" : "Take an Action");
      this.$set(this.updates.leave_it, listItem.asset_id, action);
    }
  },
};
</script>

当我检查v-switch时,DOM元素变为

<input aria-checked="true" role="checkbox" type="checkbox" name="leave_it_1" value="">

但更新对象变为:

updates:
  leave_it:
    1:"Take an Action"

您可以看到,即使aria-checked为true,对象值也等于false值。

所以,请帮助我。

1 个答案:

答案 0 :(得分:1)

使用v-switchv-model绑定到data值,然后使用它。

<v-switch
    v-model='switchValue'
    :name="['leave_it_' + listItem.asset_id]"
    @change="setAction(listItem)"
>
</v-switch>
data: {
  return {
     switchValue: false
  }
}
var action = this.switchValue ? "Leave it Alone" : "Take an Action";

此外,您可能会完全失去:name。除了@change,您还可以watch switchValue。这就是 Vue方式

watch:{
  theSwitch(newValue){
  }
}

这里是绑定多个复选框的示例。

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js">
  js ">
</script>

<div id="app">
  <div v-for='i of count'>
    <label>
       Item {{i}}
       <input v-model=checks[i] type='checkbox'></input>  
  </label>
  </div>

  <div>Values: {{checks}}</div>
</div>


<script>
  var app = new Vue({
    el: '#app',
    data: {
      count: 10,
      checks: Array(10).fill(false),
    },
    watch: {
      checks(value) {
        console.log('value changed', value)
      }
    }
  })
</script>