【问题标题】:Convert string to boolean for checkbox将字符串转换为复选框的布尔值
【发布时间】:2021-12-15 02:09:42
【问题描述】:

我使用 v-model 来显示选中/未选中的复选框:

<template v-for="(item, index) in myFields">
  <v-checkbox
     v-model="myArray[item.code]"
     :label="item.name"       
   />
</template>

当我从 API 获取真值或假值时,它工作正常。但现在我得到字符串:“true”或“false”,我的复选框总是被选中。 如果我更改代码:

v-model="Boolean(myArray[item.code])"

我得到了错误:

'v-model' 指令需要与 LHS 一样有效的属性值

我该如何解决这个问题?

【问题讨论】:

    标签: javascript typescript vue.js


    【解决方案1】:

    尝试Boolean(myArray[item.code]) 无论如何都行不通,因为字符串'false'true。所以Boolean('false')返回true

    相反,您应该这样做 myArray[item.code] !== 'false'
    'false' 将返回 false 并且除 false 之外的所有其他字符串都将返回 true

    编辑:您需要将 myArray 更改为这样的布尔数组

    myArray.map((element) => element !== 'false')
    

    那么这段代码就可以工作了

    <template v-for="(item, index) in myFields">
      <v-checkbox
         v-model="myArray[item.code]"
         :label="item.name"       
       />
    </template>
    

    【讨论】:

    • 不,我得到错误:“'v-model'指令需要作为LHS有效的属性值。”,所以我们不能在v-model中使用表达式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2015-08-13
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    相关资源
    最近更新 更多