AnwendungsszenarioAm Beispiel des Hintergrundverwaltungssystems hat jeder Benutzer unterschiedliche Schaltflächenberechtigungen. Nachdem der Administrator die Berechtigungen konfiguriert hat, erhält der Benutzer beim Anmelden die Liste der Schaltflächenberechtigungen aus der Benutzeroberfläche und kann dann basierend auf den Hintergrunddaten bestimmen, welche Schaltflächen angezeigt werden sollen. Einfach ausgedrückt: benutzerdefinierte Anweisungen Erläuterung der benutzerdefinierten Anweisungen auf der offiziellen Website von Vue.js cn.vuejs.org/v2/guide/cu… Grundlegende Konzepte Zusätzlich zu den standardmäßig integrierten Anweisungen (v-model und v-show) für Kernfunktionen kann Vue auch benutzerdefinierte Anweisungen registrieren. In Vue 2.0 sind Komponenten die Hauptform der Code-Wiederverwendung und -Abstraktion. In einigen Fällen müssen jedoch weiterhin Low-Level-Operationen an gewöhnlichen DOM-Elementen durchgeführt werden. Zu diesem Zeitpunkt werden benutzerdefinierte Anweisungen verwendet. Passen Sie beispielsweise eine V-Focus-Direktive an. Wenn die Seite geladen wird, erhält das Eingabefeld den Fokus <Eingabe V-Fokus> Globale Anpassung // Registriere eine globale benutzerdefinierte Direktive `v-focus` Vue.direktive('Fokus', { // Wenn das gebundene Element in das DOM eingefügt wird ... eingefügt: Funktion (el) { // Fokuselement el.focus() } }) Lokale Anpassung //Wenn Sie eine lokale Direktive registrieren möchten, akzeptiert die Komponente auch eine Direktivenoption: Anweisungen: { Fokus: // Definition der Anweisung eingefügt: function (el) { el.fokus() } } } Hook-Funktion Ein Direktivendefinitionsobjekt kann die folgenden Hook-Funktionen bereitstellen (alle optional): binden Wird nur einmal aufgerufen, wenn die Direktive zum ersten Mal an ein Element gebunden wird. Hier können Sie eine einmalige Initialisierungseinrichtung durchführen. eingefügt Wird aufgerufen, wenn das gebundene Element in den übergeordneten Knoten eingefügt wird (das Vorhandensein des übergeordneten Knotens wird nur garantiert, er wird jedoch nicht notwendigerweise in das Dokument eingefügt) aktualisieren Wird aufgerufen, wenn der VNode der Komponente aktualisiert wird. Dies kann jedoch geschehen, bevor die untergeordneten VNodes aktualisiert werden. Der Wert der Anweisung kann sich geändert haben, muss es aber nicht. Sie können jedoch unnötige Vorlagenaktualisierungen vermeiden, indem Sie die Werte vor und nach der Aktualisierung vergleichen. KomponenteAktualisiert Wird aufgerufen, nachdem der VNode der Komponente, in der sich die Anweisung befindet, und alle seine untergeordneten VNodes aktualisiert wurden. lösen Wird nur einmal aufgerufen, wenn die Direktive vom Element gelöst wird. andere Darüber hinaus gibt es einige grundlegende Konzepte, Hook-Funktionsparameter, dynamische Befehlsparameter usw. cn.vuejs.org/v2/guide/cu… Auf der offiziellen Website wird es sehr deutlich erklärt, deshalb werde ich hier nicht ins Detail gehen. Prinzip Wenn Sie sich für den Quellcode der benutzerdefinierten Anweisungen interessieren, gibt es im Blog Park auch einen Artikel, in dem dies sehr deutlich erklärt wird. https://www.jb51.net/article/209716.htm Das Prinzip ist:
Benutzerdefinierte Direktive „v-has“Kommen wir zurück zum Thema. Heute werden wir hauptsächlich zusammenfassen: benutzerdefinierte Anweisungen v-has, Beurteilung der Schaltflächenberechtigung Die Anmeldeschnittstelle ruft die Schaltflächenberechtigungsliste ab und speichert sie im lokalen Cache LOGIN_USER_BUTTON_AUTH Das Datenformat ist wie folgt: [ { "aktiviert":false, "Komponente":"", "Erstellungszeit": "29.06.2019 18:21:06", "Benutzer erstellen":"026a564bbfd84861ac4b65393644beef", "Symbol":"", "id":"1503273153861066776", "name":"Heutige Sammlung (Fallakte)", "öffnen":"wahr", "parentId":"2328050996633395469", "parentName":"Startseite", "Berechtigung": "sys:index:vol", "sortieren":103, "Status": "0", "Typ":"2", "updateTime":"2021-01-27 15:51:15", "updateUser":"026a564bbfd84861ac4b65393644beef", "URL": " } ] Anpassen der Konfiguration der v-has-Direktive Erstellen Sie im Ordner utils eine Datei hasPermission.js und exportieren Sie diese einheitlich in index.js const hatBerechtigung = { installieren (Vue, Optionen) { Vue.direktive('hat', { eingefügt: (el, binding, vnode)=>{ filterGlobalPermission(el, Bindung, vnode); } }); } }; /** * Globale Berechtigungskontrolle */ export const filterGlobalPermission = (el, binding, vnode) => { let Berechtigungsliste = []; let authList = JSON.parse(localStorage.getItem('LOGIN_USER_BUTTON_AUTH') || "[]"); für (let auth von authList) { Berechtigungsliste.push(auth); } wenn (!permissionList.length) { el.parentNode.removeChild(el); zurückkehren; } let-Berechtigungen = []; für (let-Element der Berechtigungsliste) { Berechtigungen.push(Element.Berechtigung); } wenn (!berechtigungen.includes(bindung.wert)) { el.parentNode.removeChild(el); } } Exportstandard hatBerechtigung; index.js unter der utils-Datei Andere js-Dateien im Ordner „utils“ können auch in index.js exportiert werden. importiere hasPermission von './hasPermission' export { hatBerechtigung} Eingeführt in main.js importiere { hasPermission } von '@/utils' Vue.use(hatBerechtigung) Verwenden Sie v-has in der Komponente, um basierend auf den Schaltflächenberechtigungen zu bestimmen, ob die Schaltfläche angezeigt werden soll <el-button v-has="'sys:arch:add'" Typ="primary" Größe="mini" Symbol="el-icon-plus" @click="add('1')"> Hinzufügen </el-button> ZusammenfassenDies ist das Ende dieses Artikels über die benutzerdefinierte V-has-Direktive von Vue zur Implementierung der Beurteilung der Schaltflächenberechtigung. Weitere relevante Inhalte zur benutzerdefinierten V-has-Direktive von Vue finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Lösen Sie das Gruppieren-nach-Abfrage-Problem nach dem Upgrade von Mysql auf 5.7
>>: Praktische Methode zum Löschen von Dateien über die Linux-Befehlszeile
Inhaltsverzeichnis 1. Reduzieren Sie die Anzahl d...
Inhaltsverzeichnis 1. Einführung in den Implement...
Inhaltsverzeichnis Ändern der Repository-Quelle S...
Hintergrund: Tablespace: Alle INNODB-Daten werden...
Was ich kürzlich gelernt habe, beinhaltet Kenntni...
1. Werkzeuge Wir benötigen jetzt zwei Tools: MySQ...
CSS-Viewport-Einheiten gibt es schon seit einigen...
Im Laufe der Zeit habe ich festgestellt, dass vie...
In diesem Artikelbeispiel wird der spezifische Co...
Bevor wir über die Datenreaktivität sprechen, müs...
Vorwort In der Vergangenheit verwendete das Unter...
Importieren Sie die aus der Oracle-Datenbank expo...
1. Erstellen Sie das Basisimage von jmeter Das Do...
Lassen Sie mich kurz einige gängige Grundgrafiken...
NAT Auf diese Weise wird die Netzwerkkarte der vi...