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