Phonegap:浏览目录,索引位置不正确

时间:2013-07-29 15:27:36

标签: javascript jquery cordova

我正在尝试使用点击事件浏览我的音乐目录 - 我可以看到原始列表视图显示确定开始,点击事件将向下钻取到下一个目录,但在第三次点击我的索引位置继续返回原始directoryentry对象的fullPath。

JS

    function readerSuccess(entries) {
    $("#test").empty();
    for (i=0;i<entries.length;i++){


    $("#test").append("<li>"+entries[i].name+"</li>");


    }

    $("#test").listview("refresh");


    ListClickHandler(entries);
    }






var ListClickHandler = function(something){
    $(document).on("click","#test li",function(event){
    var mylistname = $(this).text();

    var index = $("#test li").index(this);

    var listpath = something[index].fullPath; //this is causing the problem. entries never changes.
    alert(index);

        if(something[index].isFile ===true)
            {
            $("#test").empty();
            alert("this is a file");
            }

            else if(something[index].isDirectory===true)
            {

            var directoryentry = new DirectoryEntry(mylistname,listpath);
            var directoryreader = directoryentry.createReader();
            directoryreader.readEntries(readerSuccess,fail);
            //alert("this is a directory"+mylistname+listpath);
            }


    });
}

1 个答案:

答案 0 :(得分:0)

我设法使用以下代码实现此功能。我确定它有点乱,但希望如果他们被困在同一个问题上会帮助别人。基本上这将通过读取我的音乐根文件夹中的第一个目录开始,然后当单击每个列表目录项时,它将刷新子目录,文件等。

我必须将$(文档),(“click”.....)移动到readerSuccess函数中,以便在列表单击事件被触发时拾取正确的列表条目。我还添加了两个新数组来包含entries.name和entries.fullPath,它们在每次迭代时都会清空并使用正确的数据重新填充。以下代码是我如何工作,但我确信有一个更好的方法。谷歌绝望之后我找不到任何东西。

function readerSuccess(entries) {
    $("#test").empty();
    var listnames = new Array();
    var listpositions = new Array();

    for (i=0;i<entries.length;i++){
    if (entries[i].isDirectory===true)
    {
    alert("this is a directory");
    }
    if (entries[i].isFile===true){
    alert("this is a file")
    }

    $("#test").append("<li>"+entries[i].name+"</li>");

    listnames.push(entries[i].name);
    listpositions.push(entries[i].fullPath);

    }

    $("#test").listview("refresh");
        $(document).on("click","#test li",function(event){
    var mylistname = $(this).text();
    //alert(mylistname);
    var index = $("#test li").index(this);
    //alert(index);
    var listpath = listpositions[index];
    //alert(listpath);
    listnames.length=0;     //resets the array so new data appends with correct pos
    listpositions.length=0; //resets the array so new data appends with correct pos
    var directoryentry= new DirectoryEntry(mylistname,listpath);
    var directoryreader = directoryentry.createReader();

    directoryreader.readEntries(readerSuccess,fail);


    });