2009-07-12 9 views
1

J'utilise ASP.NET MVC, Vues partielles et Dialogues. Je fais une requête ajax au serveur et il me rend une vue partielle. Ensuite, j'utilise: $ ('# elementTag'). Html (returnData) pour remplir les divs de délimitation. Toutefois, cette vue partielle contient le travail interne pour un dialogue enveloppé dans un élément de formulaire avec le reste du contenu de la vue partielle. Le javascript également contenu dans la vue partielle, le document prêt met en place le dialogue.jquery html créer des multiples de la même forme

J'ai commencé par cette méthode de conception: regrouper le contenu du dialogue avec la vue partielle pour garder les choses ensemble.

Maintenant j'ai commencé sur ce problème parce que j'avais des problèmes avec un de mes dialogues. Je pouvais initialiser un élément de formulaire dans un formulaire de dialogue avant d'afficher la boîte de dialogue, mais lorsque l'utilisateur demandait d'enregistrer les données de la boîte de dialogue, tous les éléments récupérés à l'aide d'un serializeArray étaient vides. En utilisant Firebug, j'ai remarqué que chaque fois que je demandais la vue partielle contenant la boîte de dialogue, elle créait une autre forme du même type (c'est-à-dire définitivement une fuite de mémoire). Mon code HTML a été remplacé et je crois que le script était également en cours de duplication. Donc, soit je fais tout faux ou il y a un problème ici. J'utilise la boîte de dialogue modale pour demander des informations, sérialiser les données de la boîte de dialogue et les envoyer au serveur.

Quelle est la meilleure pratique ici? Dois-je regrouper tout le contenu de la boîte de dialogue dans le maître du site et tout le javascript dans un seul fichier js ou existe-t-il un moyen de tout remplacer?

Répondre

0

J'aurais tous les js dans un seul fichier compressé, gzip servi, de cette façon il est chargé et mis en cache sur la première page. Pour aider à garder une séparation propre du script, j'ai tendance à nommer mon script dans application.pages ou controller.action et inside ont des fonctions init qui configurent les fonctionnalités nécessaires pour cette page (onglets de chargement, configuration du dialogue modal, etc.). Peu importe si la page est chargée via ajax ou non le même script est toujours exécuté. Ce n'était pas trivial à installer mais a payé des dividendes. Paul irlandais a des pensées similaires dans son blog here. Cela peut vous aider aussi.

0

Merci pour votre réponse. Je suis nouveau à javascript, et non pas nouveau juste très, très rouillé avec beaucoup de vieilles, de mauvaises habitudes qui ont rapidement rattrapé avec moi.

Je ne sais pas exactement comment votre réponse résout mon problème, mais c'est ma courte venue (l'ignorance) pas le vôtre et à cet effet, je considère votre réponse comme la réponse.

Dans le monde des modèles ajax, connaître les modèles javascript et les meilleures pratiques est devenu essentiel. Je suis habitué à l'ancienne méthode d'actualisation complète de la page (c'est-à-dire effacer la corbeille pour faire de la place pour de nouvelles corbeilles). Vous pouvez vous en sortir avec beaucoup de mauvaises habitudes, non plus.

Votre réponse courte m'a incité à revenir à l'essentiel avec une nouvelle perspective.

Questions connexes