Titanium关闭窗口并打开新窗口

时间:2015-07-19 04:04:28

标签: titanium

我正在使用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);
    }
};

3 个答案:

答案 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);
});