0

我对 dojo 很陌生,并试图弄清楚如何以编程方式而不是声明方式做某事。我可以轻松地创建一个 dojox.mobile.RoundRectList 包含一个 dojox.mobile.ListItem 本身包含一个 dojox.mobile.switch 声明,例如

<ul data-dojo-type="dojox.mobile.RoundRectList">
<li data-dojo-type="dojox.mobile.ListItem" data-dojo-props="icon:'../../app/images/i-icon-1.png'">
    Airplane Mode
    <div class="mblItemSwitch" data-dojo-type="dojox.mobile.Switch"></div>
</li>

这是来自这里的入门指南:http: //dojotoolkit.org/documentation/tutorials/1.8/mobile/tweetview/getting_started/demo/

我想要做的是动态生成列表项,每个列表项都有自己的动态生成的按钮。下面的代码就是这样做的('list' 是我之前在代码中创建的对象数组,'ListElement' 是一个以声明方式放置的 dojox.mobile.RoundRectList):

var listObj = dijit.byId("ListElement");
for (var n = 0; n < list.length; n++) {

    var item = new dojox.mobile.ListItem({
        id: "item" + list[n].ID,
        label: list[n].Name
    });

    var sw = new dojox.mobile.Switch({
        className: "mblItemSwitch"
    });
    item.addChild(sw);

    listObj.addChild(item);

}

但是,与开关放置在列表项右侧的声明性示例不同,开关只是放置在左侧并覆盖文本。

谁能建议我如何正确放置开关?我已经准备好接受有一种更好的方法来完全做到这一点(因为我对 dojo 还是很陌生),但我还没有找到一个例子。

谢谢

4

1 回答 1

0

可能是第一次,但我自己找到了答案。看起来我抄袭这个的例子要么是错误的,要么是在稍微不同的上下文中。而不是在声明开关时使用 className 它应该只是类。例如

    var sw = new dojox.mobile.Switch({
        class: "mblItemSwitch"
    });

然后,该开关将显示正确格式并向右对齐。

于 2013-04-19T12:29:21.650 回答