Phonegap Notification Prompt Callback Issue

时间:2018-03-21 18:31:28

标签: javascript cordova phonegap-build

我有一个PhoneGap应用程序,它接受用户提示值并将该参数上传到我的公司服务器。

启动一个流程,创建一个图表并将其返回给应用程序。我在设置一个启动进程的回调函数时遇到了麻烦。就目前而言,当我使用此代码构建应用程序时,我只是在打开应用程序时出现灰色屏幕。如果我取出onPrompt回调,应用程序会加载,但我无法将用户提示传递给taskParams。

我不确定我做错了什么。

window.navigator.notification.prompt(
    new String(), // message
    function(answer) {
        if (answer.buttonIndex === 1) {
            // Ok
            locationStr = answer.input1;
            answer.executeSql("INSERT INTO cat (Name) VALUES (?)", [locationStr]);
        } else {
            // Exit
        }
    }
    onPrompt, // callback
    "Enter Location Name", //title
    ["Ok", "Exit"], // button titles
    new String() // defaultText
);

var taskParams = {
    "Latitude": lat,
    "Longitude": lon,
    "Location": locationStr
};

function onPrompt() {
    domAttr.set(dom.byId("chartLink"), "innerHTML", "Generating Chart...");
    window.gp_chart.execute(taskParams, gpChartResultAvailable, gpChartFailure);
}

1 个答案:

答案 0 :(得分:0)

您将提示的回调与数据库查询的成功回调混淆。

这里是分开的:

// database setup
var db = window.openDatabase(name, version, displayName, estimatedSize);

window.navigator.notification.prompt(
  "Enter Location Name: ", // message
  handleLocationPrompt, // callback
  "Add location", //title
  ["Ok", "Exit"] // button titles
);

// handle user's dialog action
function handleLocationPrompt(results) {
  if (results.buttonIndex === 1) {
    // Ok
    addLocationToDB(results.input1);
  }
}

function addLocationToDB(locationStr) {
  if (!locationStr) return; // don't add empty string
  // run query, pass success callback function as 3rd parameter
  db.transaction(function(tx) {
    tx.executeSql("INSERT INTO cat (Name) VALUES (?)", [locationStr], querySuccess);
  });
}

var taskParams = {
  "Latitude": lat,
  "Longitude": lon,
  "Location": locationStr
};

// handle successful db insertion
function querySuccess() {
  domAttr.set(dom.byId("chartLink"), "innerHTML", "Generating Chart...");
  window.gp_chart.execute(taskParams, gpChartResultAvailable, gpChartFailure);
}

编辑:更新代码以包含与问题无关的数据库代码