Vue-Anweisungen für benutzerdefinierte V-HAS, Schritte zur Beurteilung der Schaltflächenberechtigung

Vue-Anweisungen für benutzerdefinierte V-HAS, Schritte zur Beurteilung der Schaltflächenberechtigung

Anwendungsszenario

Am 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 auch einen Artikel, in dem dies sehr deutlich erklärt wird.

//www.jb51.net/article/209716.htm

Das Prinzip ist:

  • Durchlaufen Sie beim Parsen der Vue-Attribute jedes einzelne Attribut.
  • Fügen Sie dem Objekt ein Direktivenattribut hinzu, um die Anweisungsinformationen zu speichern.
  • Nachdem das Rendern abgeschlossen ist, wird die Funktion „Create Hook“ des Direktivenmoduls ausgeführt.
  • Der durch die Vue-Kompilierung generierte virtuelle Knoten, d. h. nachdem VNode in den übergeordneten Knoten eingefügt wurde,
  • Führen Sie jede Funktion nacheinander aus und führen Sie unsere benutzerdefinierte eingefügte Hook-Funktion aus

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>

Oben finden Sie den detaillierten Inhalt der Schritte der benutzerdefinierten V-Has-Anweisung von Vue und der Beurteilung der Schaltflächenberechtigung. Weitere Informationen zur benutzerdefinierten V-Has-Anweisung von Vue finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der benutzerdefinierten Vue-Anweisungen und ihrer Verwendung
  • Benutzerdefinierter Vue-V-HAS-Befehl zum Implementieren der Schaltflächenberechtigungsbeurteilung
  • Zusammenfassung der Entwicklung benutzerdefinierter Vue 3-Richtlinien
  • Wissenszusammenfassung zu benutzerdefinierten Anweisungen (Direktiven) für Vue3.0
  • 8 sehr praktische benutzerdefinierte Vue-Anweisungen
  • Detaillierte Erklärung der benutzerdefinierten Anweisungen in Vue
  • Schritte und vollständiger Code der benutzerdefinierten Vue-Direktive zum Begrenzen des Eingabewerts im Eingabefeld
  • Benutzerdefinierte Vue-Anweisungen und dynamisches Routing zur Erzielung einer Berechtigungskontrolle
  • Lösen Sie das Speicherverlustproblem, das durch benutzerdefinierte Vue-Anweisungen verursacht wird
  • Lösen Sie den Konflikt zwischen Onmouseup- und Klickereignissen, wenn VUE Drag-Anweisungen anpasst
  • Detaillierte Erklärung der benutzerdefinierten Anweisungen für v-bind:style-Effekte in Vue
  • Erste Schritte mit benutzerdefinierten Anweisungen in Vue 3.0

<<:  Einfaches Tutorial zum Herunterladen und Installieren der komprimierten Version von MySQL 5.7.20

>>:  Häufige Linux-Fehler bei der chinesischen Übersetzung (Neulinge müssen das wissen)

Artikel empfehlen

Detaillierte Erläuterung der gespeicherten Prozedur „MySql View Trigger“

Sicht: Wenn eine temporäre Tabelle wiederholt ver...

Lösung für die Baidu-Site-Suche, die https nicht unterstützt (getestet)

Seit kurzem ist https auch auf dem Handy möglich....

Detailliertes Tutorial zum Herunterladen und Installieren von mysql8.0.21

Offizielle Website-Adresse: https://www.mysql.com...

So erstellen, speichern und laden Sie Docker-Images

Es gibt drei Möglichkeiten, ein Image zu erstelle...

Best Practices für die Entwicklung von Amap-Anwendungen mit Vue

Inhaltsverzeichnis Vorwort Asynchrones Laden Pake...

Implementierung eines statischen Website-Layouts im Docker-Container

Serverplatzierung Es wird empfohlen, Cloud-Server...

So zeichnen Sie die Zeitleiste mit Vue+Canvas

In diesem Artikelbeispiel wird der spezifische Co...

Linux verwendet den Befehl lsof, um den Status des Dateiöffnens zu überprüfen

Vorwort Wir alle wissen, dass unter Linux „alles ...

Verwendung und Verschönerung von HTML-Blockquote-Tags

Definition und Verwendung von Blockquote Das Tag ...

Vue.js implementiert eine Bildwechselfunktion

In diesem Artikel wird der spezifische Code von V...

Die Grundprinzipien und die detaillierte Verwendung des Ansichtsfensters

1. Übersicht über das Ansichtsfenster Mobile Brow...

Implementierung von Portalen und Fehlergrenzbehandlung in React

Inhaltsverzeichnis Portale Fehlergrenzenbehandlun...

Starten Sie eine lokale Kubernetes-Umgebung mit Kind und Docker

einführen Haben Sie schon einmal einen ganzen Tag...

So stellen Sie ein SpringCloud-Projekt mit Docker bereit

Inhaltsverzeichnis Docker-Image herunterladen Sta...