我正在使用Titanium构建iOS应用程序。第一个窗口是登录页面。当用户输入用户名和密码时,这些值将被发送到PHP文件进行身份验证。
如果用户已通过身份验证 - 即他们拥有唯一的用户名/密码组合,我希望关闭当前窗口并打开新窗口。
将值发送到PHP文件,并且用户正在进行身份验证;但是,当关闭当前窗口的代码运行(Titanium.UI.currentWindow.close
)时,会抛出一个错误,指示打开新窗口的文件不存在。但是引用新窗口的文件确实存在。
我已将显示导致错误的代码移动到很多地方,但结果相同。
var loginReq = Titanium.Network.createHTTPClient();
loginReq.onload = function()
{
var json = this.responseText;
var response = JSON.parse(json);
if (response.logged == true)
{
alert("Welcome " + response.name + ". Your email is: " + response.email);
username.value = '';
password.value = '';
//This creates the new window after user authentication.
var menuPage = Titanium.UI.createWindow({
title: "Menu",
tabBarHidden: false,
url: 'menuPage.js'
});
//This is supposed to close the current window.
Titanium.UI.currentWindow.close();
//This is supposed to open the new window.
menuPage.open();
}
else
{
alert(response.message);
}
};
答案 0 :(得分:2)
不应先关闭窗口,然后再打开新窗口,而应首先打开新窗口,打开后,从新窗口关闭旧窗口。
menuPage.open({closeWindow: function(){
curWin.close(); }
});
然后,在menuPage.js
中,注意open
事件,一旦触发,请调用您传递给menuPage.js
的函数。
但我建议潜入Alloy。这种方法非常过时。
在Alloy中你会这样做:
Alloy.createController('menuPage', {closeWindow: function(){
$.getView().close();
});
在menupage中:
$.getView().addEventListener('open',args.closeWindow());
答案 1 :(得分:0)
嗨试试这个打开一个窗口
var menuPage = require('menuPage');
win = new menuPage({title:''});
由于
答案 2 :(得分:0)
如果您使用Alloy:
file windowlogin.xml
<Alloy>
<Window id="window_login">
<TextField id="txt_username"></TextField>
<TextField id="txt_password"></TextField>
<Button title="Login" id="btn_login"></Button>
</Window>
</Alloy>
file windowlogin.js
$.btn_login.addEventListener("click", function(e){
var loginUrl = "http://domain.com/login";
var dataLogin = {
username: $.txt_username.value,
password: $.txt_password.value
};
var loginReq = Titanium.Network.createHTTPClient();
loginReq.onload = function()
{
var json = this.responseText;
var response = JSON.parse(json);
if (response.logged == true)
{
alert("Welcome " + response.name + ". Your email is: " + response.email);
username.value = '';
password.value = '';
//This creates the new window after user authentication.
var menuPage = Titanium.UI.createWindow({
title: "Menu",
tabBarHidden: false,
url: 'menuPage.js'
});
//This is supposed to open the new window.
menuPage.open();
//This is supposed to close the current window.
$.window_login.close();
}
else
{
alert(response.message);
}
};
loginReq.open("POST", loginUrl);
loginReq.send(dataLogin);
});