我正在使用Cordova 2.1.0和位于at this github的提示插件。我已经使用.h,.m和.js文件正确设置了插件,并在index.html中正确链接了它。
我遇到的问题是,当调用提示函数时,它不会等待用户在继续下一个函数之前输入文本字符串,在我的使用中,使用该函数将表单值保存到localstorage用户文本字符串作为存储的ID。 此问题导致本地存储键值对与空键存储并破坏存储系统。
以下是我用来调用Prompt插件的代码示例:
function doPrompt() {
window.plugins.Prompt.show(
"What is the name of this job?",
function (userText) {
$('#promptinput').text(userText)
},
function () {
},
"Save",
"Cancel"
);
};
以下是我调用提示插件和存储值的函数的示例:
function showPrompt() {
doPrompt();
alert("prompted");
writeLocal();
alert("written");
}
警报就在那里,所以我可以看到下一个函数移动到什么时候,writeLocal函数是写入localstorage的地方。
对此的任何帮助都会很棒。我一直在试图让它正常工作。
答案 0 :(得分:1)
是的,您需要了解异步代码的工作原理。 window.plugins.Prompt.show的第二个参数是单击“确定”按钮时调用的回调。没有“等待”用户点击OK;代码是非阻塞的。
你想要这样的东西:
function doPrompt() {
window.plugins.Prompt.show(
"What is the name of this job?",
function (userText) {
$('#promptinput').text(userText);
alert("prompted");
writeLocal();
alert("written");
},
function () {
},
"Save",
"Cancel"
);
};
现在,当用户点击OK时,它会设置#promptinput,触发警报,然后调用writeLocal。如果writeLocal也是异步的,那么第二个警报也会立即被触发;否则它将在writeLocal返回时触发。