显示页面、删除内容和重新填充出现问题-可能是多重绑定

problems displaying page, deleting contents and repopulating - could this be multiple binding?

本文关键字:问题 绑定 填充 删除 新填充 显示      更新时间:2023-09-26

我有一个手机应用。

由2个屏幕组成。第一个是捕获用户第二个是用于显示数据。

这个想法是收集屏幕1上的凭据。

然后使用凭据进行ajax调用以获取数据并将其呈现屏幕2为一系列链接。

然后允许用户触摸屏幕2上的链接。这会将链接数据返回给javascript,并将其传递给ajax调用并获得更多数据-然后删除屏幕2上的所有数据,并用新数据重新填充。

我要找出的第一件事:是显示一个页面与移动。changepage(),填充它,删除内容,然后重新填充它(没有另一个调用移动。changepage())一个合理的事情要做吗?

我遇到了一个问题,我认为这与我在<a>

中使用onclick的方式有关

每次显示最近接收到的数据时,我都想在<a>中显示它。我编写每个onclick调用getData例程传递信息,以确定下一个ajax和<a>中显示的任何内容。我能想到的唯一访问它的方法是在onclick。

有更好的方法吗?

我能够很好地显示第一个ajax调用的结果。但是第二个,第三个等等,事情就变得奇怪了。

有时我会触摸一个链接,然后我将按照我的期望在屏幕上继续前进。

有时我会在第一个结果屏幕上触摸<a>,第二个结果屏幕将显示,然后(没有我从第二个屏幕选择数据)第三个屏幕将显示。

我已经查看了日志,getData()例程正在执行。

是什么原因导致的?我是不是没有正确地销毁所有的<a> ?我使用onclick的方式不是设计的吗?我应该使用按钮样式看起来像链接而不是<a>

下面是我的代码:

"use strict";
var app = {
    onDeviceReady: function() {
        $('#startButton').click(function(){
             app.getDeptsForUser();
    });
    },
    getDeptsForUser: function(){
        var parms = new Object();
        parms.userName = assignedUser;
        app.getData(JSON.stringify(parms),"ENDPOINT1", "Departments");
        $.mobile.changePage("#index", { transition: 'slide' });
    },
    getData: function(paramStr, endpoint, displayHeader){
    var paramStrObj = JSON.parse(paramStr);
    var serverName = server + ":" + port;
    var encoded = Base64().encode(paramStrObj.userName + ':' + pass);
    var authType =  'Basic ' + encoded;
    var option = endpoint+"?action=start&params=" + paramStr;
    var URL = serverName + "/rest/bpm/wle/v1/service/"+option;
    $.ajax({
        url: URL,
        type: "POST",
        crossDomain: true,
        jsonp: "callback",
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Authorization", authType);
        },
        success: function (result) {
        console.log("MobileMockUp getData() ajax success result="+JSON.stringify(result));
        if (endpoint === "ENDPOINT1"){
            app.displayData(paramStr, endpoint,"Departments", result.data.data.depts.items);
        }
        else if (endpoint === "ENDPOINT2"){
            app.displayData(paramStr, endpoint,displayHeader, result.data.data.checklists.items);
        }
        else if (endpoint === "ENDPOINT3"){
            app.displayData(paramStr, endpoint,displayHeader, result.data.data.checks.items);
        }
        },
        error: function(jqXHR, textStatus, errorThrown) {
                alert('Unable to retrieve '+displayHeader);
        },
     });
    },
    displayData: function(currParms,currEndPt, headerText, list){
    var nextEndpt;
        var nextHeaderText;
    var currParmsObj = JSON.parse(currParms);
    if (currEndPt === "MD@getDeptsForUser"){
        nextEndpt = "MD@getCheckLists";
        nextHeaderText = "Check Lists";
    }
    else if (currEndPt === "MD@getCheckLists"){
        nextEndpt = "MD@getChecks";
    }
    var htmlListString="";
    var parmObj;
    var newLink;
    $('#headerText').text(headerText);

    for (var i = 0; i < list.length; i++){
        parmObj = new Object();
        if (currEndPt === "ENDPOINT1"){
          parmObj.userName=currParmsObj.userName;
          parmObj.dept=list[i];
        }
        else if (currEndPt === "ENDPOINT2"){
          parmObj.userName=currParmsObj.userName;
          parmObj.dept=currParmsObj.dept;
          parmObj.checklist=list[i];    
        }
        else if (currEndPt === "ENDPOINT3"){
        nextHeaderText = list[i];
        }
        var str = JSON.stringify(parmObj);
        str = str.toString().replace(/"/g, '''"');
        newLink = "<a style='background:#ffffff;padding-top:5%;border-top: thin solid black; display:block;font-size:12px;font-weight:normal;color:#000000;text-decoration: none;'  href='#' onclick='app.getData('""+str+"'",'""+nextEndpt+"'",'""+nextHeaderText+"'")'><pre>" + list[i] + "     </pre></a><br>";
        htmlListString=htmlListString+newLink;
    }
    $('#taskListUL').empty();
    $('#taskListUL').append(htmlListString);
 }   

};

这可能是多重绑定吗?

我发现这是多重绑定