„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > ## Knockout-Ansichtsmodelle: Objektliterale oder Funktionen – welches ist das Richtige für Sie?

## Knockout-Ansichtsmodelle: Objektliterale oder Funktionen – welches ist das Richtige für Sie?

Veröffentlicht am 19.11.2024
Durchsuche:132

##  Knockout View Models: Object Literals or Functions – Which One is Right for You?

KO-Ansichtsmodelle: Objektliterale vs. Funktionen

In Knockout JS können Ansichtsmodelle entweder mit Objektliteralen oder Funktionen deklariert werden. Während der Hauptzweck beider darin besteht, beobachtbare Eigenschaften und berechnete Funktionen zu definieren, wirken sich wesentliche Unterschiede zwischen ihnen auf Kapselung, Flexibilität und Codeorganisation aus.

Objektliterale:

var viewModel = {
    firstname: ko.observable("Bob")
};

Objektliterale sind unkompliziert und prägnant für einfache Ansichtsmodelle ohne komplexe Logik oder berechnete Funktionen. Allerdings:

  • Sie bieten keinen Zugriff auf einen vordefinierten Kontext innerhalb berechneter Funktionen.
  • Die Verwaltung kann schwierig sein, wenn das Ansichtsmodell viele Observablen und berechnete Funktionen enthält.

Funktionen:

var viewModel = function() {
    this.firstname = ko.observable("Bob");
};

Funktionen bieten mehrere Vorteile:

  • Kapselung: Die Verwendung einer Funktion kapselt die Erstellung des Ansichtsmodells und seiner Eigenschaften in einem einzigen Aufruf.
  • dieser Kontext in berechneten Funktionen: Der dieser Kontext wird automatisch an die View Model-Instanz gebunden, was einen bequemen Zugriff auf seine Eigenschaften und Methoden innerhalb berechneter Funktionen ermöglicht.
  • Flexibilität: Funktionen können Argumente annehmen und zum Initialisieren des Ansichtsmodells basierend auf externen Daten oder anderen Objekten verwendet werden.

Best Practices:

In In den meisten Fällen wird die Verwendung einer Funktion zum Definieren von Ansichtsmodellen empfohlen. Es bietet eine größere Kapselung und Flexibilität, was die Verwaltung komplexer Ansichtsmodelle erleichtert und den ordnungsgemäßen Zugriff darauf gewährleistet.

Private Eigenschaften und Methoden:

Funktionsbasierte Ansichtsmodelle Aktivieren Sie das Erstellen privater Eigenschaften und Methoden innerhalb dieses Kontexts mithilfe des Selbstmusters:

var ViewModel = function() {
    var self = this;
    self.privateProperty = ko.observable();
    self.privateMethod = function() {};
};

Bind-Funktion:

Alternativ bieten moderne Browser und Knockout JS die Bindefunktion, um eine Funktion explizit an einen bestimmten Kontext zu binden:

var ViewModel = function() {
    this.items = ko.observableArray();
    this.removeItem = function(item) { this.items.remove(item); }.bind(this);
};

Durch die Verwendung der Bindefunktion wird sichergestellt, dass diese auf die View Model-Instanz verweist, auch wenn die Funktion aus einem verschachtelten Bereich aufgerufen wird.

Fazit:

Während sowohl Objektliterale als auch Funktionen zum Definieren von Knockout-Ansichtsmodellen verwendet werden können, werden Funktionen aufgrund ihrer Kapselung, Flexibilität und effizienten Handhabung in berechneten Funktionen im Allgemeinen bevorzugt.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3