vue.js - Vue - 从 array.push 中的 select 传递参数
问题描述
从 select传递params
时,通常的语法是这样的。
<v-select
v-model="item_id"
items="items"
item-text="item_name"
item-value="id"
@change='itemDescription()'
/>
export default {
data: ()=> ({
item_id: '',
items: [],
itemDescription '',
}),
method: {
itemDescription() {
axios.get('/api/item', {
params: { id: this.item_id }
})
.then(response => this.itemDescription = response.data )
}
}
}
Now the problem comes when the select is inside an array.push
. 我不能简单地将值传递给,this.item_id
因为结构是object[0][1]
. 下面是一个示例语法。
<v-btn @click="addItem()">Add</v-btn>
<template v-for="item in items" :key="item.id>
<v-select
v-model="item.item_id"
items="item_all"
item-text="item_name"
item-value="id"
@change='itemDescription()'
/>
</template>
export default {
data: ()=> ({
items: [],
item_all: '',
}),
method: {
addItem() {
this.items.push({
item_id: '',
description: '',
}),
itemDescription() {
axios.get('/api/item', {
params: { id: this.items.item_id } // <-- this doesn't work
})
.then(response => this.items.description = response.data )
}
}
}
每次选择每一行时如何通过id
每一行?
解决方案
itemDescription 方法中的“this”与“method:”中的“this”不同。所以它不会工作。
使用另一个变量来保留它,并在 itemDescription 中使用它。
method: {
var that = this;
addItem() {
this.items.push({
item_id: '',
description: '',
}),
itemDescription() {
axios.get('/api/item', {
params: { id: that.items.item_id } // 'this' ain't work
})
.then(response => this.items.description = response.data )
}
推荐阅读
- mysql - MySQL:不建议在没有服务器身份验证的情况下建立 SSL 连接。使用 SSL
- acumatica - Acumatica 和卡在运输中
- php - Laravel Horizon - 不同守卫的大门
- jquery - 迭代数组>填充选择框>从函数返回选择框作为html
- python - 如何在使用 vscode 调试时执行设置 python 虚拟环境的 shell 脚本(我需要对 launch.json 进行哪些更改)
- c# - 发送发布请求多部分表单数据。来自某些 Microsoft 服务的错误“超出行长限制 100”
- python - 在 Windows 中使用 pyinstaller 将 .py 文件转换为 .exe 时出错
- python - 将请求正文中的文件 POST 到 API
- vcpkg - 如何将 osgearth 与 vcpkg 一起使用
- asp.net-core - 将框架和本机运行时文件移动到子文件夹中