Как я могу справиться с загрузкой нескольких взаимосвязанных объектов JavaScript? - PullRequest
0 голосов
/ 22 марта 2011

(я использую псевдокод)

У меня есть серия пользовательских элементов управления ASP.NET.Каждый включает в себя много javascript, поэтому у них есть соответствующие файлы .js.Они вставляют строку, такую ​​как 'var this.clientid = new jsobject();', поэтому каждый элемент управления имеет на странице объект javascript с таким же идентификатором, как и у него.

Это прекрасно работает, за исключением того, что некоторые элементы управления зависят от других.Например, объект CatFlap должен знать о CatHouse.Таким образом, в своем конструкторе он будет принимать объект CatFlap, примерно так:

page.inject("var " + this.ClientID + " = new CatFlap(" + CatHouse.ClientID + ");";

однако в конструкторе для CatFlap CatHouse не определен, если на странице 2 пользовательских элемента управления находятся в противоположномзаказ, например.это происходит раньше, потому что он еще не сконструировал элемент.

Одно из решений - поместить объявление в document.ready (), но это не удается, потому что моя система управления немного сложнее, чем выше, с другими зависимостяминапример, CatFlapSwitch, в зависимости от CatFlap, и, таким образом, оба конструктора перейдут в document.ready (), и проблема снова проявится.

Существует множество наборов инструментов, которые имеют несколько пользовательских элементов управления, кто-нибудь знает, каким удается решить эту проблему?

Пример проблемы: http://jsfiddle.net/tckuM/

Если вы переключите две строки объявления объекта, вы получите сообщение об ошибке, мне интересно, как уменьшить это.

1 Ответ

1 голос
/ 22 марта 2011

Да, document.ready или в ASP.NET AJAX, Sys.Application.add_load являются обработчиками событий, которые задерживают выполнение кода, и вы должны полагаться на это.Кроме того, вы должны передавать внешние зависимости как свойства, а не как аргументы конструктора.Он не будет хорошо работать с аргументами конструктора из-за той самой проблемы, которую вы упоминаете.Возможно, вам удастся заставить все это работать со свойствами и не нуждаться в событиях document / ready / app.load ...

HTH.

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