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

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 13:30:31441parcourir

## 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 );
  • 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 ());

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);
    };
  • 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);
      }
    };
  • 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);
    };

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!

Déclaration:
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