Je reçois des objets JSON à partir d'un site Web avec mise à jour / Créer / Supprimer des indicateurs. Sur la base de ces informations, je mettez à jour, créez ou supprimez des éléments HTML et des rappels BIND. Cela peut affecter plusieurs éléments HTML.
Mon approche actuelle consistait à tout mettre en objets spécifiques qui gèrent la génération HTML via JQuery E.g.: P>
$.("<table>").addChild($("<tr>")).addClass('test')
5 Réponses :
Pour rendant HTML Vous pouvez utiliser Handlerbars.js Il est très mature et avoir beaucoup de documentation p>
Pour la liaison des événements Je vous recommande d'utiliser jQuery Délégate sur l'objet parent qui n'a pas eu Supprimé avec la mise à jour de l'AJAX. De cette façon, vous devez seulement réaffecter des événements sur chaque demande p>
Recherchez le cadre MVVM. C'est exactement ce dont vous avez besoin car votre JavaScript devient de plus en plus complexe. Il sépare vos besoins en matière de préoccupation entre votre code de présentation (HTML) et votre logique de présentation (JavasRIPT)
knockout.js est Une très bonne bibliothèque pour vous aider à démarrer, je recommande de traverser les tutoriels pour vous aider à démarrer dessus. P>
Exemple rapide: P>
var ViewModel = {
helloWorldVariable: ko.observable('test'),
helloWorld: function() {
this.helloWorldVariable('clicked!');
}
}
// Bind viewmodel
Dans votre cas, je peux vous recommander de consulter knockoutjs , angularjs ou backbone.js . < / p>
Merci, j'ai pris un oeil sur Knockoutjs et Angularjs et je comprends la façon dont Angularjs fait mieux les choses.
Vérifiez backbone.js . C'est un MVC-ISH très populaire et flexible mis en place pour les applications de navigateur JS. Le code est hébergé sur Github . P>
Knockout JS pourrait valoir un look, il sépare le modèle de données du modèle de vue et prend soin des dépendances entre eux. P>
Avez-vous essayé de créer des événements personnalisés?
Jamais entendu parler d'eux, Ive vient de regarder les yeux et je ne pense pas que cela aiderait à séparer le code de vue / logique. Si vous avez une idée sur la façon de les utiliser, veuillez expliquer :)
Duplicaté possible: Stackoverflow.com/Questtions/7495680/...