vue.js - VueJS 将选择绑定(bind)到对象,但仍然是 POST 字符串

标签 vue.js

将 select 元素绑定(bind)到对象(而不是字符串值)但仍然让 HTML 元素提交字符串值的正确方法是什么?

我已经成功地让它工作了,但看起来我似乎正在利用一个错误:

<select v-model="selected" v-on:change="price=selected.price">
    <option v-for="item in items" v-bind:value="item" value="{{ item.id }}">{{ item.name }}</option>
</select>

这按预期工作:“selected”属性附加到“item”对象,但表单仅 POST 项目的 ID。但是,如果我颠倒 HTML 属性的顺序,使 value={{ item.id }} 出现在 v-bind:value="item"之前,则表单 POST“[Object]” 而不是,例如“3”。

它如此脆弱的事实让我觉得我做错了什么。

那么处理这个问题的正确方法是什么?

最佳答案

我也遇到过类似的情况,我构建了多个 vue 组件,这些组件既可以在 vue 组件中使用,也可以在标准表单中使用。

<select v-model="selected" v-on:change="price=selected.price">
    <option v-for="item in items" :value="JSON.stringify(item)">{{ item.name }}</option>
</select>

看起来就是你想要的。我也成功地使用了计算属性或过滤器,但我认为 stringify 最具可读性。

关于vue.js - VueJS 将选择绑定(bind)到对象,但仍然是 POST 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41304189/

相关文章:

javascript - vue.js props 也会发生 setter/getter 吗?

javascript - 组件渲染后如何聚焦到特定的输入文本?

vue.js - 如何从 bootstrap-vue 模态监听事件?

javascript - 选中/取消选中 Vue.js 组中的所有复选框

javascript - 如何更改 Vuetify 数据表中的标签 "Sort by"?

webpack - 在 Vue/Webpack 中找不到音频资源

javascript - Vue Router 不匹配具有多个动态值的 url

javascript - Vue js 标签和单选按钮的表单绑定(bind)

vue.js - 如何在electronic + vue中other.js和background.js之间进行通信

docker - 无法从主机访问正在运行的 docker 容器(localhost :8081)