Vue.js:有没有办法让按钮“v-if”通过观察者反应?

问题描述 投票:0回答:1

基本上,我有一个用户列表页面,其中包含一些其他配置文件,包括您自己的配置文件。只有在您自己的个人资料中才会显示一个按钮。

问题是当我从其他配置文件切换到我自己的配置文件(因此,路由器的参数正在改变)时,该按钮应该出现。反之亦然虽然有效(我的个人资料 - >另一个个人资料按钮消失了)。

现在,只有当我从另一个路由器切换时才会出现该按钮(例如,不是从其他某个配置文件切换而是将主页改为我自己的配置文件)。

On my Profile.vue

                        <v-btn
                            v-if= "isUserProfile()"
                            outline
                            large
                            fab
                            v-on="on"
                            color="indigo">
                        <v-icon>edit</v-icon>
                        </v-btn>

在Profile.vue中使用观察程序,只要url / router param发生更改,就会查看

  watch: {
        '$route.params.username': {
            immediate: true,
            handler (value) {
                this.username = value
                this.getId()
                this.isUserProfile()
            }
        }
    },

使用这种方法,

isUserProfile () {
            return (this.$store.state.route.params.username === this.$store.state.user.username)
        },

因此,每当我从另一个配置文件切换到我自己的配置文件时,按钮应该出现,因为当我从我的配置文件切换到另一个配置文件时它会起作用。对于我的个人资料为“123123”的gif示例:

https://gyazo.com/cf47036bfb60cc6490c538e50a32db81

我在这里做的是手动切换网址上的参数从进入我的帐户,到另一个帐户切换回我的帐户。 (按钮在那里;好|不在那里;好的|按钮仍然没有应该在那里;不好。)

javascript vue.js vuejs2 vuex
1个回答
0
投票

好的,所以答案很简单,因为我刚刚检查过,所以不需要修改使其成为计算值(我认为尽管如此,更好的做法是使其成为计算值)。

答案:而不是v-if:isUserProfile,使其成为v-show:isUserProfile;现在按钮会改变到完成的方式。

我现在将阅读https://vuejs.org/v2/guide/conditional.html以获得更多知识。

© www.soinside.com 2019 - 2024. All rights reserved.