Maison > interface Web > js tutoriel > le corps du texte

## Littéraux d'objet et fonctions dans Knockout.js : quelle déclaration de modèle de vue vous convient le mieux ?

Susan Sarandon
Libérer: 2024-10-26 13:30:31
original
490 Les gens l'ont consulté

## Object Literals vs Functions in Knockout.js: Which View Model Declaration is Right for You?

Différence entre les modèles de vue Knockout déclarés comme littéraux d'objet et fonctions

Dans Knockout.js, les modèles de vue peuvent être déclarés comme littéraux d'objet ou fonctions. Bien que les deux approches servent à exposer les données et la logique à la vue, il existe quelques différences subtiles à prendre en compte.

Déclaration littérale d'objet :

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

ko.applyBindings(viewModel );
Copier après la connexion
  • Syntaxe simple et propre.
  • Les propriétés des données sont immédiatement exposées à la vue.
  • Les propriétés calculées nécessitent une liaison directe à viewModel (par exemple, viewModel.full()) ou une utilisation avec liaison.

Déclaration de fonction :

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

ko.applyBindings(new viewModel ());
Copier après la connexion

Avantages de l'utilisation d'une fonction :

  • Accès direct à cette valeur :
    Les fonctions fournissent un accès immédiat à l'instance en cours de création (ceci), permettant des propriétés calculées concises et une définition de méthode.

    var ViewModel = function(first, last) {
      this.full = ko.computed(function() {
        return this.first() + " " + this.last();
      }, this);
    };
    Copier après la connexion
  • Encapsulation de la création du modèle de vue :
    Les fonctions permettent de définir la création du modèle de vue au sein d'un seul appel, garantissant que toutes les propriétés et méthodes sont correctement initialisées.
  • Définition du modèle privé variables utilisant self :
    Si vous rencontrez des problèmes avec la portée appropriée de ceci, vous pouvez définir une variable (self) égale à l'instance du modèle de vue et l'utiliser à la place pour maintenir le contexte correct.

    var ViewModel = function() {
      var self = this;
      this.items = ko.observableArray();
      this.removeItem = function(item) {
        self.items.remove(item);
      }
    };
    Copier après la connexion
  • Liez-vous à ceci avec bind :
    Pour les navigateurs modernes, la fonction bind peut être utilisée pour garantir qu'une fonction spécifique est appelée avec la valeur correcte de cette valeur.

    var ViewModel = function() {
      this.items = ko.observableArray();
      this.removeItem = function(item) {
        this.items.remove(item);
      }.bind(this);
    };
    Copier après la connexion

Le choix de l'approche à utiliser dépend des exigences spécifiques et des préférences de votre application. Les déclarations de fonction offrent une plus grande flexibilité et une plus grande encapsulation, tandis que les déclarations littérales d'objet sont plus simples et plus pratiques pour les scénarios de base dans lesquels les variables privées ou les propriétés calculées ne sont pas nécessaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal