vue.js - 在 v-for 中调用一个 vue 组件
问题描述
我有以下结构:
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Наименование</th>
<th scope="col">API ключ</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<tr v-for="adv in advertisers">
<th scope="row">{{ adv.id }}</th>
<td>{{ adv.name }}</td>
<td>{{ adv.api_key }}</td>
<td>
<advertiser-delete-component :advertiser-id="adv.id"></advertiser-delete-component>
<advertiser-edit-component :advertiser-id="adv.id" :advertiser-name="adv.name"></advertiser-edit-component>
</td>
</tr>
</tbody>
</table>
数组“广告商”保存来自服务器的数据。数据正确。但我看到所有“广告商删除组件”和“广告商编辑组件”在组件道具中都有广告商数组的第一项。以下是广告客户编辑组件的代码:
<script>
import { EventBus } from '../../app.js';
export default {
mounted() {
},
props: ['advertiserId', 'advertiserName'],
data: function() {
return {
formFields: {
advertiserName: '',
advertiserId: this.advertiserId,
},
errors: []
}
},
methods: {
submit: function (e) {
window.axios.post('/advertiser/edit', this.formFields).then(response => {
this.formFields.advertiserName = '';
EventBus.$emit('reloadAdvertisersTable');
$('#addAdvertiser').modal('hide');
}).catch(error => {
if (error.response.status === 422) {
this.errors = error.response.data.errors || [];
}
});
}
}
}
props: ['advertiserId', 'advertiserName']
使用我的代码调用每个组件的道具都是相同的。我希望它们是动态的,当循环一个接一个地遍历数组时,它们会从数组中获取相应的元素。
我做错了什么?
更新:这是表格组件的完整代码:
<template>
<div>
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Наименование</th>
<th scope="col">API ключ</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<tr v-for="adv in advertisers">
<th scope="row">{{ adv.id }}</th>
<td>{{ adv.name }}</td>
<td>{{ adv.api_key }}</td>
<td>
<advertiser-delete-component :advertiser-id="adv.id"></advertiser-delete-component>
<advertiser-edit-component :advertiser-id="adv.id"
:advertiser-name="adv.name"></advertiser-edit-component>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
import {EventBus} from '../../app.js';
export default {
mounted() {
this.getAdvertisersTable();
EventBus.$on('reloadAdvertisersTable', this.getAdvertisersTable)
},
props: ['totalCountOfAdvertisers'],
data: function () {
return {
advertisers: [],
}
},
methods: {
getAdvertisersTable: function () {
window.axios.get('/advertisers/all')
.then(r => {
this.advertisers = r.data.data;
})
.catch(e => {
console.log(e.response.data.errors);
})
}
}
}
</script>
解决方案
我认为formFields
应该是对象数组,例如:
formFields: [{
advertiserName: '',
advertiserId: this.advertiserId,
}],
推荐阅读
- c# - 怎么知道邮件已经发送,附件可以删除?
- google-apps-script - (谷歌表格脚本)清除特定单元格
- c# - 网格动态生成搜索过程中重复问题解决的算法
- javascript - 使用 ng-repeat angularjs 在表中应用行跨度
- python - 两个熊猫数据框的对称差异
- python - 安装 numpy Raspberry Pi
- rust - 如何仅为“bin”目标禁用 lints
- r - 如何在不使用管道的情况下将 dcast 引入 data.table 链?
- javascript - 我如何每 10 秒捕获一次帧并将其发送到服务器?
- h2 - 由于用于从 flyway_schema_history 读取数据的 sql 语句中的错误,flyway 迁移无法与 H2 数据库一起使用