Почему открытие диалогового окна jQuery изменяет данные в отдельном объекте jqGrid? - PullRequest
0 голосов
/ 14 марта 2012

Это странное поведение, и я постараюсь объяснить это как можно лучше. Я знаю, что это длинный выстрел.

Я храню мои объекты jqGrid на моей странице в массиве глобальных объектов grids = {}, так что myGrid будет доступен как grids['mygrid']. Я также обертываю их в объект, который имеет несколько дополнительных свойств, таких как переданные настройки, идентификатор сетки, идентификатор пейджера и т. Д.

С учетом сказанного я инициализирую все свои сетки на $(document).ready(). Я также настроил нажатие кнопки, чтобы показать модальное диалоговое окно jQuery, которое содержит 3 сетки. Они хранятся в div с display: none внизу моей страницы.

По какой-то причине я не могу понять, когда я нажимаю кнопку, чтобы открыть диалоговое окно, мой массив grids изменяется, и объекты теряют свои свойства. Это происходит после события open в диалоговом окне и происходит только один раз. Сетка все еще функционирует, но в определенных ситуациях, когда я получаю доступ к некоторым настройкам, они исчезают!

За этим стоит большой код, поэтому я не уверен, как я смогу это показать. Кто-нибудь знает, делает ли диалог jQuery какое-то забавное закулисное дело при рендеринге диалога, который может повлиять на живущий в нем jqGrid? Другие сетки работают нормально, но они используют локальные данные, тогда как эта получает данные с сервера. Любой совет приветствуется. Спасибо!

Вот изображение объекта в памяти до и после изменения. Обратите внимание на поле jqGridSettings, оно также делает строчную букву 'J' после того, как это произойдет.

enter image description here

Это начало определения объекта в моем javascript: enter image description here

Это будет использоваться так:

grids = { }; // Global object.
grids["myGrid"] = new ByCommonGrid(myGrid, myGrid-Pager, url, editurl);

1 Ответ

0 голосов
/ 14 марта 2012

Так что я понял это. Это не имело никакого отношения к jqGrid, что хорошо.

Оказывается, что при создании диалога он выполняет любой javascript, который может быть в разметке HTML, который вы превращаете в диалог.

В этом случае я использовал частичные представления, которые устанавливают глобальные переменные, которые я использую для управления своими сетками. Когда диалог был создан, он снова будет создан, поэтому любая инициализация, которую я сделал с ним, была потеряна.

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