Как сохранить SmartGWT от загрязнения пространства имен окна? - PullRequest
1 голос
/ 19 июля 2010

У меня есть существующий JavaScript в проекте, который создает объект «Календарь».Объект является членом window.

Когда я добавил smartgwt в свой проект, исходный объект Calendar был перезаписан календарем smartclient (ISC_Calendar), упакованным в smartgwt.

Использование браузерана основе отладчика JS я обнаружил, что все объекты JS из smartgwt содержались как в window, так и в window.isc.Я определенно не хочу, чтобы они все на уровне окна, потому что многие из них имеют общие имена, такие как Calendar.

В моем случае нарушающим файлом является ISC_Calendar.js, который заканчивается войной / / sc /модули после компиляции gwt.Он вызывает следующую строку: isc.ClassFactory.defineClass("Calendar","Canvas","DataBoundComponent");

Скомпилированное местоположение GWT: war / имя проекта / sc / modules / ISC_Calendar.js
Местоположение Jar: com.smartclient public / sc / modules / ISC_Calendar.js
Src location: не могу найти его

Полагаю, я могу просто изменить javascript-файл в банке, которую я использую, но это не решает большую проблему.Я не хочу беспокоиться о проблемах с пространством имен в будущем

Ответы [ 2 ]

0 голосов
/ 30 сентября 2011

Вы должны установить

var isc_useSimpleNames = false;

в теге скрипта до загрузки любых компонентов SmartClient.Таким образом, SC будет регистрировать классы только в пространстве имен isc. *.

0 голосов
/ 20 июля 2010

Скажем, вы хотите переименовать календарь smartgwt в Calendar2.

Сначала проверьте исходный код smartgwt.Смотрите здесь: http://code.google.com/p/smartgwt/wiki/BuildingFromSVN

Затем в исходном коде откройте trunk / main / src / com / smartgwt / client / widgets / calendar / Calendar.java.Найдите этот фрагмент кода:

public Calendar(){
    scClassName = "Calendar";
}

И замените «Календарь» на Calendar2.

Теперь скомпилируйте исходный код.Обратитесь к этой ссылке еще раз, чтобы помочь вам скомпилировать: http://code.google.com/p/smartgwt/wiki/BuildingFromSVN.

Возьмите получившийся файл smartgwt.jar и откройте его в редакторе jar.Перейдите к com.smartclient public/sc/modules/ISC_Calendar.js и откройте его.Найдите этот фрагмент кода:

isc.ClassFactory.defineClass("Calendar","Canvas","DataBoundComponent");

И замените «Календарь» на Calendar2.

Далее, в том же файле выполните поиск и замену.Заменить isc.Calendar на isc.Calendar2.Также выполните поиск и замену в ISC_Core.js.

Теперь сохраните банку.Календарь должен быть функциональным, а пространство имен окна. Календаря останется нетронутым.

...