Question

Je suis en train de créer une page Web avec la forme qu'une fois le changement d'utilisateur tout champ, la validation et la mise à jour engage immédiatement plutôt que de laisser l'utilisateur de cliquer sur le bouton soumettre. J'utilise Knockout.js et plug-in cartographie. Je sais que je peux y parvenir en créant un champ calculé pour chaque champs d'origine, mais ce genre de travail est Tedius et muet, est-il une bonne pratique pour créer un auditeur général d'écouter sur des changements dans tous les domaines et back-end de mise à jour respectivement?

Était-ce utile?

La solution

Pour vous abonner à tout changement que vous pourriez utiliser la méthode ko.toJS (). En fait, il permet de parcourir le graphique d'objets et Déballer observables. Comme vous le savez probablement lorsque vous utilisez ko.computed il souscrit à toutes les lectures des champs et observables réévalue à chaque changement. Donc, si vous utilisez le code comme ceci:

ko.computed(function() {
   ko.toJS(viewModel);
   // update data on server
});

En outre, vous devriez faire attention que ce morceau de code mettra à jour les données sur le serveur juste après l'initialisation. Il pourrait être facilement évité. S'il vous plaît checkout cet exemple: http://jsfiddle.net/UAxXa/embedded/result/

Aussi je pense que vous pouvez envoyer des données modifiées uniquement au serveur. Vous pouvez intégrer le plugin ko.editbales ( https://github.com/romanych/ko.editables ) et certains KO sous connaissances -Capuchon. S'il vous plaît checkout cet exemple: http://jsfiddle.net/romanych/RKn5k/

J'espère que cela pourrait vous aider.

Autres conseils

Vous avez eu plusieurs options mais si vous voulez un seul auditeur, un bon moyen est d'utiliser le même code que j'utilisé pour créer un tracker de changement. Il écoute simplement les changements observables. Ses environ 19 lignes de code. Vous pouvez saisir cela et au lieu de l'utiliser pour le suivi des modifications, fil juste une méthode qui enregistre les changements quand ils se produisent.

Pour le suivi des modifications de configuration, ajoutez cette propriété tracker à votre modèle de vue:

viewModel.tracker = new ChangeTracker(viewModel); 

Accrocher ces derniers dans votre vue de déterminer quand les changements se produisent:

viewModel.tracker().somethingHasChanged(); 

Accrochez ceci dans votre modèle de vue lorsque vous souhaitez réinitialiser l'état dans les fonctions (ex: chargement, sauvegarde):

viewModel.tracker().markCurrentStateAsClean; 

En option, vous pouvez passer votre propre fonction de hachage pour le suivi de l'état, aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top