jquery html создает несколько одинаковых форм - PullRequest
1 голос
/ 12 июля 2009

Я использую ASP.NET MVC, частичные представления и диалоги. Я делаю ajax-запрос к серверу, и он возвращает мне частичное представление. Затем я использую: $ ('# elementTag'). Html (returnData) для пополнения ограничивающих элементов div. Однако это частичное представление содержит внутреннюю работу для диалога, заключенного в элемент формы, вместе с остальным содержимым частичного представления. Javascript, также содержащийся в частичном представлении, после того, как документ готов, устанавливает диалог.

Я начал с этого метода проектирования: связал содержимое диалога с частичным представлением, чтобы все было вместе.

Теперь я начал с этой проблемы, потому что у меня были проблемы с одним из моих диалогов. Я мог бы инициализировать элемент формы в диалоговой форме до его отображения, но когда пользователь запросил сохранить данные из диалогового окна, все элементы, полученные с использованием serializeArray, были пусты.

Используя Firebug, я заметил, что каждый раз, когда я запрашивал частичное представление, содержащее диалоговую форму, он создавал другую форму того же типа (т. Е. Определенно утечка памяти). Мой HTML был заменен, и я считаю, что сценарий также дублировался.

Так что либо я все делаю неправильно, либо здесь проблема. Я использую модальное диалоговое окно для запроса информации, сериализации данных из диалогового окна и отправки их на сервер.

Какая лучшая практика здесь? Должен ли я объединить все содержимое диалога в мастер сайта и весь javascript в один файл js или есть способ заменить все?

Ответы [ 2 ]

0 голосов
/ 14 июля 2009

Спасибо за ваш ответ. Я новичок в javascript, ну не новенький, просто очень, очень ржавый с множеством старых, вредных привычек, которые быстро меня настигли.

Не совсем уверен, как твой ответ решает мою проблему, но это мой короткий приход (невежество), а не твой, и поэтому я считаю твой ответ ответом.

В мире шаблонов ajax знание шаблонов javascript и лучших практик стало очень важным. Я использую старый способ полного обновления страницы (то есть очистить корзину, чтобы освободить место для новой корзины). Вы можете избавиться от многих вредных привычек, больше нет.

Ваш короткий ответ побудил меня вернуться к основам с новой точки зрения.

0 голосов
/ 12 июля 2009

Я бы собрал все js в одном сжатом файле, обслуживаемом gzip, чтобы он загружался и кэшировался на первой странице.

Чтобы обеспечить чистое разделение сценария, я обычно использую пространство имен в своем сценарии.в application.pages или controller.action и внутри есть функции init, которые устанавливают функции, необходимые для этой страницы (вкладки загрузки, диалоговое окно настройки и т. д.), поэтому не имеет значения, загружается ли страница через ajax или нет, тот же сценарий все еще выполняется.Это было не тривиально для установки, но принесло дивиденды.У Пола Айриша похожие мысли в своем блоге здесь .Это также может вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...