使用select时如何返回布尔值而不是字符串?

nik*_*aft 5 vue.js vuejs2

我有这个:-

            <div class="form-group">
                <label for="">Allow Multiple</label>
                <select class="form-control" v-model="allowMultiple">
                    <option value=true>Yes</option>
                    <option value=false>No</option>
                </select>
            </div>
Run Code Online (Sandbox Code Playgroud)

allowMultiple=true在初始化它时设置,但是当我选择 NoallowMultiple='false'那么它不再是一个布尔值而是一个字符串?如何让它成为布尔值?

Ker*_*mit 8

在 HTML 中,如果在标签中设置属性值,则该值将是默认类型-- string。因此您可以使用 vuev-model将其绑定到其他类型的值,例如,Boolean、Number 等。以下代码工作,结果是你想要的

new Vue({
  el:'#app',
  data: {
    allowMultiple: false
  },
  methods: {
    print: function () {
      alert(this.allowMultiple);
    }
  }
})
Run Code Online (Sandbox Code Playgroud)
<div class="form-group" id='app'>
   <label for="">Allow Multiple</label>
   <select class="form-control" v-model="allowMultiple" @change='print'>
        <option :value='true'>Yes</option>
        <option :value='false'>No</option>
   </select>
</div>
<script src="https://unpkg.com/vue@2.4.2/dist/vue.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案。只需确保在定义选项时使用绑定语法:`v-bind:value="true"` 或简写形式 `:value="true"`。[表单输入绑定文档](https://vuejs.org/v2/guide/forms.html#Select-Options) 中对此语法进行了简要但不充分的讨论。 (3认同)

Ikb*_*bel 6

这是在 Vue 中执行此操作的一种方法。而不是在 html 中硬编码您的选项。使用 Vue 方式,在你的 Vue 数据中设置一个选项数组,然后用于v-for渲染数组中的所有选项。

每个选项应该有 2 个属性:一个文本和一个值。该值应该是您要查找的布尔值。

现在,每当用户更改所选选项时,它将始终为布尔值。

new Vue({
  el: '#app',
  data: {
    allowMultiple: true,
    options: [
      {text: 'Yes', value: true},
      {text: 'No', value: false},
    ],
  }
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>


<div id="app">
  <div class="form-group">

      <div>Allow multiple: {{allowMultiple}}  [Type: {{typeof allowMultiple}}]</div><br>

      <label for="">Allow Multiple</label>
      <select class="form-control" v-model="allowMultiple">
          <option v-for="option in options" :value="option.value">{{option.text}}</option>
      </select>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)


小智 6

我发现对我有用的更简单快捷的方法是:

<select id="selected" v-model="item.selected">
    <option :value=0>No</option>
    <option :value=1>Yes</option>
</select>
Run Code Online (Sandbox Code Playgroud)

也许这对任何人都有用。