首页 > 解决方案 > Vue方法范围,从if语句返回不返回

问题描述

我想根据 v-for 中的用户角色检查从 Vue 方法返回真/假,并且该方法没有从 if 语句返回。

一、模板是这样的(简体)

<div v-for="user in users" :key="user.id">
 <div :contenteditable="checkuser(user)">{{content}}</div>
</div>

我只需要真/假,这是 checkMethod

这不起作用

    checkUser(user) {
      if (user.admin) {
        return user.team_id === this.$store.state.user.team_id;

       // I would expect to return from method here and not continue execution
       // also, any variables (even declared outside if) are not modified    

     }

      if (user.deleg) {
        return user.subteam_id === this.$store.state.user.subteam_id;
      }

      // method ends here
    }

我知道这既愚蠢又简单,但我无法让它发挥作用。如果只有一个检查,它显然可以正常工作,但我想检查它是否有 2 个角色。管理员也有委托权限,所以如果用户是管理员,则不需要检查委托,但如果他没有管理员,则应检查委托。

标签: if-statementvue.jsmethodsscopereturn

解决方案


@skirtle,谢谢,你只是对我的大脑做了一些混乱的调用。这完全是我的想法失败了。

解决代码如下

checkUser(user) {
      if (this.$store.getters.isAdmin) {
        return true;
      }

      if (this.$store.getters.isDeleg) {
        return user.subteam_id === this.$store.state.user.subteam_id;
      }
    }

解释

我正在检查从v-for传递的user.admin,但我需要检查当前登录用户的user.admin(如果他可以编辑内容,则将该属性绑定到 true/false)。因为我已经在 vuex 中有这个,所以我只是用 getter 抓住了它并返回了 true (如你所说的那样工作)。

我希望这是有道理的。再次感谢,我被困住了,你帮助了我。

@Jacob,我只是用这个函数将 contenteditable 绑定到 true/false。


推荐阅读