LINUX.ORG.RU

Сообщения push2start

 

dojo - проблемы с диджитами

Сразу говорю, в 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 + по нескольку пунктов подменю в каждом табе, нажимая на которые грузятся разные файлы).

А второй не годится, ибо это костыль, да и работает к тому же он только для форм - диджит подключить так не выходит.

Должен же быть способ заставить это работать... Прошерстил уже все что только нашел - ничто не помогло.

push2start
()

RSS подписка на новые темы