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

## Modèles de vue Knockout : littéraux d'objet et fonctions – Quel est le meilleur ?

Barbara Streisand
Libérer: 2024-10-26 10:04:02
original
268 Les gens l'ont consulté

## Knockout View Models: Object Literals vs. Functions - Which is Better?

Objets et fonctions pour déclarer des modèles de vue Knockout

Dans Knockout JS, les modèles de vue peuvent être déclarés sous forme de littéraux d'objet ou de fonctions. Considérez les exemples suivants :

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

ko.applyBindings(viewModel );
Copier après la connexion
// Function
var viewModel = function() {
    this.firstname= ko.observable("Bob");
};

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

Bien que les deux approches atteignent le même objectif, définir des modèles de vue en tant que fonctions offre plusieurs avantages :

Accès direct à « ceci »

Au sein d'une fonction, « ceci » fait référence à l'instance en cours de création. Cela permet un accès facile aux observables et aux propriétés calculées du modèle de vue :

var ViewModel = function(first, last) {
  this.first = ko.observable(first);
  this.last = ko.observable(last);
  this.full = ko.computed(function() {
     return this.first() + " " + this.last();
  }, this);
};
Copier après la connexion

En revanche, lors de l'utilisation de littéraux d'objet, une liaison de contexte explicite est requise dans les observables calculés :

var viewModel = {
   first: ko.observable("Bob"),
   last: ko.observable("Smith"),
};

viewModel.full = ko.computed(function() {
   return this.first() + " " + this.last();
}, viewModel);
Copier après la connexion

Encapsulation et confidentialité des variables

Les fonctions fournissent une encapsulation plus naturelle pour les modèles de vue, car elles peuvent définir des variables privées qui ne sont pas exposées à la portée globale. Cela permet d'éviter les écrasements accidentels ou les conflits.

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

Enfin, les fonctions permettent une liaison facile à l'aide de la méthode 'bind', garantissant ainsi le contexte correct pour les fonctions de rappel :

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

En résumé , bien que les deux méthodes de définition des modèles de vue Knockout soient valides, l'utilisation de fonctions offre une plus grande flexibilité, un meilleur contrôle et des avantages d'encapsulation. Ces avantages font des fonctions un choix privilégié pour les modèles de vue plus complexes et maintenables.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!