首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将vue组件调用到v-for中

将vue组件调用到v-for中
EN

Stack Overflow用户
提问于 2018-12-17 10:10:15
回答 1查看 68关注 0票数 0

我有以下结构:

代码语言:javascript
复制
 <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>

数组“广告商”保存来自服务器的数据。数据是正确的。但我发现,所有的“广告商-删除-组件”和“广告商-编辑-组件”有第一项广告主阵列在组件道具。下面是广告编辑组件的代码:

代码语言:javascript
复制
<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']都是相同的。我希望它们是动态的,当循环一个接一个地遍历数组时,它们从数组中获取相应的元素。

我做错什么了?

更新:以下是表组件的完整代码:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-17 10:16:00

我认为formFields应该是这样的对象数组:

代码语言:javascript
复制
formFields: [{
    advertiserName: '',
    advertiserId: this.advertiserId,
}],
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53812957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档