0

我正在开发一个dojo包含Dialog. 内容Dialog作为文本从模板html文件加载。我遇到的问题是在将 dom 节点添加到 domDialog之前,我需要将 dom 节点添加到内容Dialog中。

这是我的模板(DialogContent.html):

<div>
    <table>
        <tbody>
            <tr>
                <td>
                    <label for="printTitle">Map Title:</label>
                </td>
                <td>
                    <input id="printTitle" data-dojo-type="dijit/form/TextBox" name="title" />
                </td>
            </tr>
            <tr>
                <td>
                    <label for="printOrientation">Page Orientation:</label>
                </td>
                <td>
                    <select id="printOrientation" data-dojo-type="dijit/form/FilteringSelect" name="orientation">
                        <option value="Letter ANSI A Landscape">Landscape</option>
                        <option value="Letter ANSI A Portrait">Portrait</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="printUnits">Scale Bar Units:</label>
                </td>
                <td>
                    <select id="printUnits" data-dojo-type="dijit/form/FilteringSelect" name="units">
                        <option value="Miles">Miles</option>
                        <option value="Kilometers">Kilometers</option>
                        <option value="Feet">Feet</option>
                        <option value="Meters">Meters</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="printLayers">Layers to Include in Legend:</label>
                </td>
                <td>
                     <select id="printLayers" data-dojo-type="dijit/form/MultiSelect" name="layers"></select>
                </td>
            </tr>
        </tbody>
    </table>
    <div>
        <button data-dojo-type="dijit/form/Button" type="submit">OK</button>
    </div>
</div>

然后我将模板作为文本加载到我的小部件中define([...,...,...,"dojo/text!./PrintWidget/templates/DialogContent.html"]...)

这是作为字符串变量出现的,但我需要#printLayers动态添加选项。因为它只是一个文本字符串,所以我不能将它用作 dom 节点。当我使用domConstruct.toDom(dialogContent)它时,它会转换为我可以使用的实际 dom 节点,但由于此时 dom 节点实际上尚未添加到 DOM(它只是一个 javascript dom 对象),我无法#printLayers通过dom.byIdor访问dojo/query

如何#printLayers在我的模板中访问以动态添加option元素?

4

1 回答 1

1

所以事实证明解决方案与操作顺序有关。我无法使用 dom 节点,因为它尚未添加到 dom 中。它只是一个 javascript 对象。一旦我创建了Dialogdom 节点并将 dom 节点设置contentDialog, dom 节点就被添加到 dom 中,我可以#printLayers使用dom.byId("printLayers").

于 2013-06-03T20:05:54.273 回答