javascript - VueJs 将 bool 值绑定(bind)到下拉列表

标签 javascript vue.js

我有一个包含两个选项的下拉列表:“True”和“False”,选择后,我希望表单将所选值保存为 bool 值。

因此,如果我在用户选择“True”时检查表单值,我希望该值为 true 作为 bool 值。

<select v-model="selected">
  <option :value="null">Pick a value</option>
  <option v-for="val in options">{{val}}</option>
</select>

...

data() {
 return {
  selected: null,
   options: ["true", "false"]
}

这是我正在尝试的一个 fiddle : https://jsfiddle.net/q0nk9h32/5/

如何以 bool 形式输出所选值?

额外问题:除了使用 options 变量,它是否是有效的语法/良好实践:

v-for="val in ["true", "false"]" ?

为此使用一个变量似乎太过分了(但当我尝试直接使用数组时,它在 fiddle 中失败了)。谢谢!

最佳答案

您可以将值绑定(bind)到每个 <option>使用:value .

https://v2.vuejs.org/v2/guide/forms.html#Select-Options

new Vue({
    el: '#app',
    data() {
        return {
            selected: null
        }
    }
});
<script src="https://unpkg.com/vue"></script>

<div id="app">
    <select v-model="selected">
        <option :value="null">Pick a value</option>
        <option v-for="val in [true, false]" :value="val">{{val}}!!!</option>
    </select>
    <p>
        Selected is the {{ typeof selected }}: {{ selected }}
    </p>
</div>

您可以为 v-for 编写数组如果你愿意的话可以内联。在您原来的示例中,它不会起作用,因为您在字符串周围包含了双引号,但已经在属性周围使用了双引号。

您有很多选项可以将文本呈现为 TrueFalse对于这些值...

如果您只有两个值,truefalse ,我倾向于放弃 v-for一起写,然后分开写。

<option :value="null">Pick a value</option>
<option :value="true">True</option>
<option :value="false">False</option>

格式化文本的替代方法是使用过滤器或方法。所以那就是:

<option v-for="val in [true, false]" :value="val">{{ val | filter }}</option>

<option v-for="val in [true, false]" :value="val">{{ method(val) }}</option>

对于过滤器,您可以在组件的 filters 中定义它部分,对于方法,它位于您的 methods 中。无论哪种方式,该函数只需将 bool 值转换为字符串,然后将第一个字母大写即可。

// Obviously you wouldn't call it 'method'...
method (value) {
    const str = String(value);
    return str.charAt(0).toUpperCase() + str.slice(1);
}

也就是说,鉴于只有两种可能的选择,还有各种其他方法可以做到这一点。例如:

<option v-for="val in [true, false]" :value="val">{{ val ? 'True' : 'False' }}</option>

关于javascript - VueJs 将 bool 值绑定(bind)到下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56550469/

相关文章:

javascript - 在vuejs中过滤const数据

需要 Laravel vue axios 解释

javascript - vuejs 根据 promise 更新模板中的值

javascript - Vanilla JS : How to target an input element by the input-field's name ("name" in DOM tree)?

javascript - 如何在 HTML 中转义 JavaScript 代码

javascript - 如果此脚本禁止提交,为什么还要提交此表单?

node.js - 错误/node_modules/node-sass : Command failed

javascript - 如何更改 Vue.js 中某个 div 的颜色

javascript - 开发时跨域AJAX调用 : possible?

javascript - navigator.geolocation 精度与什么有关?