![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Здравств, есть у меня одно действие по которому мне нужно менять 2 значени в таком вот блоке "(function($) {})(jQuery);" - погуглил чуток, оказывается. что вызвать отсюда функцию не возмоэжно.. :( Как быть?
У меня такая фишка, - если срабатывает move-Event с ExtJs-Window, то менять координаты в одном плагине jQuery. А этот плагин в отдельном файле ограничен вот таким блоком. Может не вызов функции. может что-то другое.. Знает кто-то другое(или просто) решение? Спасибо. |
|||
|
||||
| Amphiluke |
|
|||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 17 Всего: 112 |
Не уверен, что до конца понял проблему по вашему описанию. По всей видимости, вы хотите изменить локальные переменные, объявленные внутри анонимной функции "(function($) {})(jQuery);"? Да, это невозможно (за крайне редкими исключениями, о которых лучше не знать). Программист, писавший плагин, намеренно включил код в анонимную функцию, чтобы не захламлять глобальное пространство имен и/или ограничить доступ извне к внутренним (локальным) переменным. С локальными вложенными декларациями функций — то же самое.
Чтобы иметь возможность взаимодействовать с внутренностями плагина, этот плагин сам должен предоставлять набор свойств/методов, составляющих интерфейсную часть его реализации, и доступных, к примеру, через собственное пространство имен модуля. |
|||
|
||||
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Кажется решилось(подсказали), но способ мне не нравится. хотя и работает.
Вынес переменную как глобальную. вне jQuery плагина. :( Это оч сильний "хардкодинг" с точки зрения js?
- а можно поподробней? Мне кажется это будет более елегантное решение чем вынести переменную из плагина и сделать ее глобальной... Спасибо. |
|||
|
||||
| Amphiluke |
|
||||||
|
☽ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1253 Регистрация: 26.8.2009 Репутация: 17 Всего: 112 |
Ну да, вынос переменных в глобальное пространство имен считается одним из грубых приемов программирования (антишаблон).
Для этого придется допиливать плагин, что лишает вас возможности последующих обновлений исходников (или, по крайней мере, это будет не так просто). Впрочем, вы все равно уже изменили его… По хорошему, его придется переписать основательно, и всю последующую поддержку и доработку взвалить на себя. Как пример, доработанный вами плагин должен объявить одну-единственную глобальную переменную — собственное пространство имен. Это фактически объект, предоставляющий набор методов чтения/изменения нужных вам параметров плагина (ну и, может быть, еще какие-нибудь методы). Например, если раньше вы делали из нескольких локальных переменных просто глобальные, то теперь плагин задействует, скажем, шаблон «модуль»
Теперь вместо чтения/изменения глобальных переменных вам нужно будет пользоваться методами объекта pluginModifiedByMe:
Это, заметьте, просто ориентировочный пример возможной реализации, не более. Почитайте про шаблоны в JavaScript, если этот вопрос вам интересен. Можете взять книжку С. Стефанова, к примеру. Это сообщение отредактировал(а) Amphiluke - 29.5.2012, 15:35 |
||||||
|
|||||||
| Killer_13 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 12.1.2008 Где: Germany Репутация: нет Всего: 1 |
Amphiluke - спасибо, регил сл способом. добавил функцию в плагин, а потом вызвал функцию от объекта.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Применение библиотек | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |