dijit.byId () возвращает неопределенное значение даже в dojo.addOnLoad () - PullRequest
1 голос
/ 24 августа 2011

Я недавно начал работать в додзё. dijit.byId () возвращает неопределенное значение, даже если я помещаю этот вызов в dojo.onLoad ().

<script type="text/javascript"> 
dojo.require("dijit.form.Select");
function myhandler(ev)
{
    var mydiv = dojo.byId('mydivid');
    if (ev == 'Disable') {
        mydiv.style.display = 'none';
    } else {
        mydiv.style.display = 'block';
    }
}
function regHandler()
{
    var item = dijit.byId("myState");
    alert(item);//shows undefined
    dojo.connect(dijit.byId("myState"), 'onChange', myhandler);
}
dojo.addOnLoad(regHandler);
</script>

<select input class="dialogInputElement" dojoAttachPoint="myState" dojoType=dijit.form.Select name="myState" id="myState" value='Enable' style="margin-bottom:5px">
<option value="Enable">Enable</option>
<option value="Disable">Disable</option>
</select>

это работает нормально, если я задерживаю вызов dijit.byId () с помощью setTimeout (). версия додзё 1.4.2 Любое решение или обходной путь будут оценены.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 24 августа 2011

Если это дословно из вашего кода, похоже, что вы пропустили двойные кавычки в вашей декларации dojoType.Если ваши входные данные никогда не объявляются как виджеты dijit, они никогда не будут доступны для dijit.byId().

. Если вам нужен более общий селектор узлов, используйте dojo.byId(), вместо этого он выберет любой узел с идентификатором, а не только виджеты dijit.

2 голосов
/ 25 августа 2011

Вы пытались добавить атрибут djConfig = "parseOnLoad: true" в конфигурацию dojo?

Когда вы включаете файл библиотеки dojo.js, вы можете установить атрибут следующим образом:

<script type="text/javascript" src="dojo/dojo.js"
        djConfig="parseOnLoad: true">
</script>

В моих тестах это, похоже, решило проблему. В этой jsfiddle заметке, если вы удалите атрибут тега djconfig (на левой навигационной панели) и запустите его, вы получите поведение, которое вы описываете.

...