Сразу говорю, в dojo я не так давно, поэтому извините за возможно глупый вопрос.
Столкнулся с проблемой использования диджитов в файлах, подключенных аяксом с помощью dojo.xhrGet:
// функции подключения файла
function loadIntoNode(data, xhr){
if(xhr.args.node){
xhr.args.node.innerHTML = data;
}
}
function intoNode(node, url){
return {
url: url,
node: dojo.byId(node),
load: loadIntoNode
};
}
//обработка события
dojo.connect(dojo.byId("form"), "onclick", function() {
dojo.xhrGet(intoNode("results", "form.php"));
});
Содержимое формы в подключенном файле имеет атрибуты диджитов (dojoType), примерно так:
<input type="text" dojoType="dijit.form.TextBox" name="firstname" id="firstname" />
в этом случае форма перестает обрабатываться корректно, стиль не применяется. Также при таком способе подгрузки файла не работают простые диджиты (даже банальный dojo-тултип)
Как получилось установить, фигня в том, что dojo не обрабатывает на лету предназначенные для него включения, а меняет их на свой код только в момент первоначальной загрузки, т.е. input становится таким:
<input value="" widgetid="opt" tabindex="0" id="opt" class="dijit dijitReset dijitLeft dijitTextBox" dojoattachpoint="textbox,focusNode" dojoattachevent="onmouseenter:_onMouse,onmouseleave:_onMouse" autocomplete="off" name="opt" type="text">
Итак, проблемы нет в 2х случаях:
1 - Если файл грузится в момент первоначальной загрузки страницы (обычным инклюдом php)
2 - Если в подключаемом файле заменить элементы формы на уже обработанные (как в последнем примере) - тогда все в шоколаде
Первым способом воспользоваться не получится, ибо необходимо подключать довольно большое количесво файлов в зависимости от выбора юзера, все сразу пихать в приложение не правильно :) (используется dojoTabs + по нескольку пунктов подменю в каждом табе, нажимая на которые грузятся разные файлы).
А второй не годится, ибо это костыль, да и работает к тому же он только для форм - диджит подключить так не выходит.
Должен же быть способ заставить это работать... Прошерстил уже все что только нашел - ничто не помогло.