希望你们都能帮忙。
我有一个下拉菜单,我正在使用v-bind
分配一个数组给所选的值。
<select v-model="selected" name="SKU[]" @onChange>
<option v-for="infos in data" v-bind:value="{ level: infos.stockLevel, SKU: infos.SKU }" @change="onChange($event)" >{{infos.SKU}} </option>
</select>
有多个菜单,我将所选选项存储在SKU[]
中,然后通过post将它们传递给表单。
问题是我的控制器现在阅读SKU[]
如下:
array:2 [▼
0 => "[object Object]"
1 => "[object Object]"
]
我想将infos.SKU
存储在SKU[]
中,而不是object object
中。
你知道我该怎么做吗?
3条答案
按热度按时间2izufjch1#
你不能在html中存储javascript对象。你只能在那里使用字符串,所以你应该用你的对象调用
JSON.stringify()
方法,然后传入值。然后你就可以在JSON.parse()
之后将它作为一个对象使用。但是最好的情况是使用另一个vue组件作为选项,或者在值中只传递对象的idcu6pst1q2#
可以直接传递选中的
v-model
属性,然后将数据对象压入SKU
数据变量,而不是在@change
事件中传递事件。现场演示**:**
2skhul333#
首先,我不确定您是如何管理多重选择的,因为如果不使用
multiple
属性或任何其他方式,一次只有一个值显示为选中,这从“多重选择UI”的Angular 来看似乎很模糊。其次,没有
@onchange
语法,它应该是onchange
或@change
。第三,
@change
事件应该在select
元素上触发,而不是在option元素上触发。最后,您的
v-model
是用来绑定所选元素的,那么为什么不使用它来跟踪所选元素呢?这是演示版-