如何获取所选Dojox.mobile.listItem的索引值?

时间:2013-08-01 09:08:24

标签: ibm-mobilefirst dojo dojox.mobile

我正在使用DOJO工具包开发一个worklight项目。因为我是Worklight和Dojo的新手,我刚刚创建了一个列表并试图获取点击列表的索引,以便我可以在下一个显示相应的描述/操作视图。 我尝试在listItem“onClick”函数中传递索引值,但在传递索引参数后我无法移动到另一个视图。

HTML文件

<div data-dojo-type="dojox.mobile.ScrollableView" id="view0"
        data-dojo-props="selected:false,scrollDir:'v'">
        <div data-dojo-type="dojox.mobile.Heading"
            data-dojo-props="label:'View0'" ></div>
        <ul data-dojo-type="dojox.mobile.RoundRectList" id="dataList">

        </ul>
<div data-dojo-type="dojox.mobile.Heading"
            data-dojo-props="fixed:'bottom'"></div>
    </div>

JS档案

function abcd()
    {
    ..
    ...
    ...
     var dlist = dijit.registry.byId("view0");
    for(var i=1;i<=3;i++)
{
    var lstId = "list" + i;
    var list = new dojox.mobile.ListItem({label: labl,rightIcon:"mblDomButtonBlueCircleArrow",transition:"slide",id:lstId,onClick:dispData(lstId),moveTo:"#"});
}
                    dlist.addChild(list);


    }

    function dispData(index)
    {
        //debugger;
        alert(index);
        dijit.registry.byId("view0").performTransition("**someview***", 1, "slide");
    }

如何在dojo中获取所选列表的索引值。是否有其他方法可以执行此操作。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果你使用循环索引作为循环中定义的单击处理程序的闭包变量...那是行不通的。 (例如,参见JavaScript closure inside loops – simple practical example

我发现将id添加到ListItem更容易,然后使用该事件在单击处理程序中查找该项:

        function listItemHandler(event) {
            // Look up the clicked ListItem and get its id 
            var id = dijit.registry
                    .getEnclosingWidget(event.currentTarget).id;

            alert(id);
        }

        var dlist = dijit.registry.byId("dataList");
        for ( var i = 1; i <= 3; i++) {
            var lstId = "list" + i;
            var list = new dojox.mobile.ListItem({
                label : "label" + lstId,
                rightIcon : "mblDomButtonBlueCircleArrow",
                transition : "slide",
                id : lstId,
                moveTo : "#"
            });
            dlist.addChild(list);
        }
        dojo.query("#dataList .mblListItem").on("click", listItemHandler);

答案 1 :(得分:0)

构建如下行:

..'label': 'xx', 'moveTo':'#', 'onClick':function(){  yourFunction('id_of_item')}   ..

在功能中使用此功能移动到另一个视图

var w = dijit.byId('currentView');
w.performTransition('newView',1,"slide",null); //or #newView

它对我有用。警报显示?它进入功能?