bootstrap-vue - table 在 AJAX 请求后不会更新 (vue2.js)

bootstrap-vue - table won't get updated after AJAX request (vue2.js)

我是 vue.js 的新手,我看到这个很棒的库完全满足我的项目需求:Boostrap-Vue

example source code

我遵循了基本说明并添加了一个小改动,ajax 调用动态内容:

<layout :docs="docs">
    <template slot="demo">

        <b-table
                stripped
                hover
                :items="items"
                :fields="fields"
                :current-page="currentPage"
                :per-page="perPage"
                :filter="filter"
        >
            <template slot="name" scope="item">
                {{item.value.first}} {{item.value.last}}
            </template>

        </b-table>

    </template>

</layout>

导出默认值{

    mounted () {
       this.get_data();
    },
    data() {
        return {
            docs: {
                component: 'bTable'
            },
            items: [],
            fields: {
                name: {label: 'Person Full name', sortable: true},
            },
            currentPage: 1,
            perPage: 5,
            filter: null
        };
    },
    methods: {
        get_data () {            
        this.$http.get("myapp/users").then(res => {
            if (res.body) {
                this.items = res.body;
            } else {
                this.error = true;
            }
        });
      }
    }
};

所以问题是 - 在我得到 Ajax 响应并且 "items" 变量用数据初始化后,但 table 仍然没有得到更新。

最奇怪的是,对于静态数据,它工作正常(如示例源代码所示,没有 AJAX)。

知道为什么吗? 谢谢!!!

您是否尝试调试 res.body 及其包含的内容?您的 myapp/users return 的结构是什么?你return结构是不是直接这样:

[
    { "name": "item 1"},
    { "name": "item 1"},
]

还是像这样:

{
    "result": [
        { "name": "item 1"},
        { "name": "item 1"},
    ]

}

如果是最新的,你的 this.items = res.body 应该是:this.items = res.body.result

我发现了问题,似乎需要根据我在响应中收到的值定义以下字段:

fields: {
            name: {label: 'Person Full name', sortable: true},
        }

所以如果我的 json 看起来像这样:

{user_name: "user"}

它应该是这样的:

fields: {
            user_name: {label: 'Person Full name', sortable: true},
        }

无论如何,Yoram de Langen感谢您的帮助!