Vue ボタンの権限制御の導入

Vue ボタンの権限制御の導入

序文:

日常的なプロジェクトでは、バックグラウンド インターフェイスによって返されるデータに基づいて、現在のユーザーの操作権限を判断する必要がある場合があります。削除権限がある場合は削除ボタンを表示する必要があります。この権限がないと、ボタンは表示されず、削除もされません。情報を検索することで、この機能はvuexを通じて実現されます。

1. 手順

1. ボタンの権限を定義する

バックグラウンド インターフェイスによって返された権限データを保存するには、 statebuttomPermissionを作成します。

setPermissionは、データを受け入れ、ページ権限管理をbuttomPermissionオブジェクトに渡すために使用されます。

vuex の使用:

Vue.use(Vuex)

Vueインスタンスを作成する const store = new Vuex.Store({
    州: {
        ボタン権限: {}
    },
    突然変異:
        setPermission(状態、権限) {
            state.buttomPermission = 許可
        }
    }
})
デフォルトストアをエクスポート


2. ストアを定義する

'./store/index.js' からストアをインポートします

新しいVue({
    店、
    el: '#app',
    レンダリング: h => h(App)
})


3. 権限指示を作成する

新しいdirectivesフォルダーを作成し、 permission.jsファイルを作成します。

ここで、 inserted関数は、バインドされた要素が親ノードに挿入されるときに、要素に権限があるかどうかを確認するために使用されます。

挿入されました(el、バインディング、vnode) {}


4. パーミッションディレクティブを使用する

ボタン ページでpermissionディレクティブを導入して定義し、 buttomにディレクティブを記述して、ディレクティブ内の対応する値をバインドします。

 <button v-permission="'add'">追加</button>
'./directives/permission' から権限をインポートします
ディレクティブ: {permission,},


5. 不正なデータを削除する

permission命令では、 bindingsを通じてボタンバインディングのvalueを取得し、 buttomPermissionオブジェクトでそれを見つけて、権限があるかどうかを判断します。権限がない場合は、ノードを削除します。

挿入(el, バインディング, vnode) {
        btnPermissionValue を bindings.value とします。
        ブール値をvnode.context.$store.state.buttomPermission[btnPermissionValue]に設定します。
        !boolean && el.parentNode.removeChild(el);
    }


6. 状態管理データの受け渡し

setPermissionメソッドを通じて状態管理データを権限管理に渡す

権限を {} にします
this.$store.commit("setPermission", 権限);


II. 概要

一般的に、 buttomPermission権限ステータス オブジェクトはvuexを通じて定義され、次にpermissionsディレクティブが作成されます。 permissionsディレクティブは各buttomに使用され、ボタンの特定の意味の値がバインドされます。次に、 permission.jsファイルで現在の値を取得し、現在のボタンにbuttomPermissionからの権限があるかどうかを取得します。権限がない場合は、現在のボタン ノードを直接削除します。

これで、vue ボタンの権限制御に関するこの記事は終了です。vue ボタンの権限制御に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue 動的ルーティングと Springsecurity ボタンレベルの権限制御の実装
  • VUEフロントエンドボタン権限制御の詳細な説明
  • Vueカスタム命令に基づいてボタンレベルの権限制御を実装するアイデアの詳細説明

<<:  Linux のソフトリンクとハードリンクの詳細な説明

>>:  CSS3で実装された炎のアニメーション

推薦する

JSはBaidu Newsナビゲーションバーの効果を実現

この記事では、Baidu News Navigation Barの効果を実現するための具体的なJSコ...

別の種類の「キャンセル」ボタン

「キャンセル」ボタンは必要な操作プロセスの一部ではなく、デザイン上の主要な要素として表示されません...

React の 3 つの主要属性における Ref の使用に関する詳細な説明

目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...

jQueryはhide()とtoggle()関数を使用してカメラブランド表示の非表示機能を実現します。

最近、jQuery を学習しているときに、show()、hide()、toggle() 関数に出会い...

Datagrip2020 が MySQL ドライバーのダウンロードに失敗する

「downloadlaod」を直接クリックしてもダウンロードできない場合は、ここからダウンロードす...

Linux でプロセスを効果的に管理するための 8 つのコマンド

序文プロセス管理の役割:サーバーの健全性状態を判定する: プロセスの状態 (メモリ、CPU 占有率な...

MySQL のデータの偶発的な削除の解決策と kill ステートメントの原則

mysql が誤ってデータを削除しました削除ステートメントを使用して誤ってデータ行を削除する誤ってデ...

Navicat でストアド プロシージャ、トリガーを作成し、カーソルを使用する簡単な例 (画像とテキスト)

1. テーブルを作成する<br /> まず、2 つのテーブル (users テーブルと...

MySQL の null と not null、null と空の値の違いの詳細な説明 ''''

MySQL を長い間使用してきた多くの人は、これら 2 つのフィールド属性の概念をまだよく理解して...

IDEA で Docker を WSL2 にデプロイする詳細なプロセス

ローカル環境はWindows10+WSL2(Ubuntu)です。サーバーにDockerをインストール...

MySQL 権限とデータベース設計のケーススタディ

権限とデータベース設計ユーザー管理SQLyogを使用してユーザーを作成し、権限を付与する基本コマンド...

nodejs で worker_threads を使用して新しいスレッドを作成する方法

導入前の記事で述べたように、NodeJS には 2 種類のスレッドがあります。1 つは、ユーザー リ...

Oracle VM VirtualBox の CentOS7 オペレーティング システムのインストール チュートリアル図

目次インストール手順環境設定実行構成インストール手順ダウンロードアドレス: バージョン6.0 最初に...

CSS 表示属性のインラインブロックレイアウト実装の詳細な説明

CSS 表示プロパティ注: !DOCTYPE が指定されている場合、Internet Explore...

CSS3のtransform属性で実装される4つの機能

CSS3 では、transform 関数を使用して、テキストや画像の回転、拡大縮小、傾斜、移動という...