【问题标题】:Hiding tab in Vue.js if if-statement is true如果 if 语句为真,则在 Vue.js 中隐藏选项卡
【发布时间】:2020-02-04 14:37:41
【问题描述】:

我有一个 Vue 组件,它的模板如下所示:

<template>
  <div>
    <div class="row" >
      <button class="btn btn-primary" style="margin-bottom:20px" @click="changeSelectedComp">Back</button>
      <button class="btn btn-primary" style="margin-left:1000px" @click="EditMode">Edit</button>
    </div>

    <vue-tabs>
      <v-tab title="Basic">
        <app-players></app-players>
      </v-tab>
      <v-tab title="History">
        <app-histories></app-histories>
      </v-tab>
      <v-tab title="Timetable">
        <app-timetables></app-timetables>
      </v-tab>
      <v-tab title="Scholarship">
        <app-scholarship></app-scholarship>
      </v-tab>
    </vue-tabs>
  </div>
</template>

我想要实现的是隐藏标签HistoryTimetableScholarship,如果这个陈述是真的:

IsCurrentUserMemberOfGroup("Admins", function (isCurrentUserInGroup) {
    if(isCurrentUserInGroup) {
        // hide the tabs
    }
});

这是IsCurrentUserMemberOfGroup 函数:

function IsCurrentUserMemberOfGroup(groupName, OnComplete) {

    var currentContext = new SP.ClientContext.get_current();
    var currentWeb = currentContext.get_web();

    var currentUser = currentContext.get_web().get_currentUser();
    currentContext.load(currentUser);

    var allGroups = currentWeb.get_siteGroups();
    currentContext.load(allGroups);

    var group = allGroups.getByName(groupName);
    currentContext.load(group);

    var groupUsers = group.get_users();
    currentContext.load(groupUsers);

    currentContext.executeQueryAsync(OnSuccess,OnFailure);

    function OnSuccess(sender, args) {
        var userInGroup = false;
        var groupUserEnumerator = groupUsers.getEnumerator();
        while (groupUserEnumerator.moveNext()) {
            var groupUser = groupUserEnumerator.get_current();
            if (groupUser.get_id() == currentUser.get_id()) {
                userInGroup = true;
                break;
            }
        }
        OnComplete(userInGroup);
    }

    function OnFailure(sender, args) {
        OnComplete(false);
    }
}

我看了v-if(条件渲染),但还没有理解语法。 试过&lt;vue-tabs v-if="IsCurrentMemberofGroup"&gt;,还是不行。

如果 if 语句为真,如何隐藏选项卡? (这里是full component

【问题讨论】:

  • 如果 IsCurrentMemberofGroup 为真则渲染,如果 IsCurrentMemberofGroup 不为真则渲染使用 跨度>

标签: javascript vue.js if-statement tabs show-hide


【解决方案1】:

isCurrentUserInGroup放在数据里面,方便大家参考:

export default {
        components: {
            ...
        },
        methods: {
            ...
        },
        data: {
            isCurrentUserInGroup: false
        }
    };

并在需要时设置为 true 或 false。 然后你可以在标签中将它与v-if 一起使用:

<vue-tabs>
      <v-tab title="Basic">
        <app-players></app-players>
      </v-tab>
      <v-tab v-if="isCurrentUserInGroup" title="History">
        <app-histories></app-histories>
      </v-tab>
      <v-tab v-if="isCurrentUserInGroup" title="Timetable">
        <app-timetables></app-timetables>
      </v-tab>
      <v-tab v-if="isCurrentUserInGroup" title="Scholarship">
        <app-scholarship></app-scholarship>
      </v-tab>
    </vue-tabs>

【讨论】:

  • 谢谢,但我还是不明白该放在哪里IsCurrentUserMemberOfGroup("Admins", function (isCurrentUserInGroup) { if(isCurrentUserInGroup) { // hide the tabs } });
  • 您可以从created()生命周期钩子中调用该方法。
猜你喜欢
  • 2011-10-24
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多