vue.js 数据属性不会在v-for中的单击事件时更新

oogrdqng  于 2022-11-17  发布在  Vue.js
关注(0)|答案(2)|浏览(140)

在v-for循环中的click事件之后,我遇到了data属性不更新的问题。vue组件如下所示:

<template>
<div v-if="showResults && placeholder === 'Country'" class="results-container">
            <ul>
                <li class="is-clickable" v-for="country in countries" :key="country.id" >{{country.name}}
                    <span class="is-pulled-right">

                    <img class="plus mr-2" src="/images/icons/plus.svg" />
                    <p @click="setChosen(country.id)" class="select-text">SELECT</p>
                  </span>
                </li>
            </ul>
        </div>
</template>

<script>
export default {
    name: "Searchbar",
    props: {
        placeholder: String,
    },
    data() {
        return {
            countries: null,
            showResults: false,
            chosenId:null,
            chosenName: null,
            searchInput:null,
        };
    },
    methods: {
        getCountries() {
            axios
                .get("/api/getCountries")
                .then((response) => {
                    this.countries = response.data.data;
                })
                .catch((error) => {
                    console.log("error");
                    console.log(error);
                });
        },
        setChosen(id){
          this.chosenId = id;
        }
    },
    mounted() {
        this.getCountries();
    },
};
</script>

`
我希望chosenId在点击时更新,但它实际上并没有更新,除非我更新dom,或者强制vue做出React。我做错了什么?我可以控制台日志的id完全好。

b4qexyjb

b4qexyjb1#

你的代码应该工作正常,我没有看到任何问题。这是工作演示。你可以看一下,并尝试通过参考这个演示找到根本原因。
第一个

pgvzfuti

pgvzfuti2#

您是否检查了控制台中来自js/vue的一些错误/警告?
您的代码中存在一些问题。您的模板<template/>中有一个错误的结束标记。
showResults属性在你的代码中总是false,所以,我看不出有任何方法可以显示你的国家选择列表。
否则,如果你纠正上面提到的,就没有问题了。它工作得很好。
这里是Playground:
https://stackblitz.com/edit/vue-vdcfgp?file=src/components/Searchbar.vue
尝试使用{{chosenId}}调试-显示组件中的chosenId

相关问题