当我从主窗口创建一个子窗口时,我想传递一个JavaScript对象,但我不确定是否有办法实现它?
使用TideSDK创建的两个窗口都有自己的JavaScript环境,就像两个浏览器窗口一样(如果我理解的话,那就是它们就是这样),所以你不能在另一个窗口中访问一个窗口中的变量。另一方面,您可以从您所在的窗口访问其他窗口(例如使用Ti.UI.getOpenWindows
)。那么......有办法吗?
我认为有一些变通方法是可行的,但它们都不是非常直接的,每个都使用其他东西,然后只是简单的JavaScript:
Ti.Database
或Ti.Filesystem
存储我要传递的数据,然后从子窗口中检索它Ti.UI.createWindow("app://page.html?data1=test&data2=foobar");
答案 0 :(得分:4)
您可以将对象分配给子窗口对象
var objToBePassed = {foo:'bar'};
var currentWindow = Ti.UI.currentWindow;
var newWindow = currentWindow.createWindow("app://page.html");
newWindow.obj = objToBePassed;
newWindow.open();
并且在子窗口的javascript环境中,您可以通过
访问该对象var currentWindow = Ti.UI.currentWindow;
var obj = currentWindow.obj;
另一种方法是使用Ti.API.set:
Ti.API.set('objKey', objToBePassed);
您可以通过
随处访问该对象var obj = Ti.API.get('objKey');
答案 1 :(得分:0)
我知道这已经得到了解答,但是我遇到了一种模仿PHP $ _GET变量的方法,它将执行OP认为我认为的事情:
<script type="text/javascript">
(function(){
document.$_GET = [];
var urlHalves = String(document.location).split('?');
if(urlHalves[1]){
var urlVars = urlHalves[1].split('&');
for(var i=0; i<=(urlVars.length); i++){
if(urlVars[i]){
var urlVarPair = urlVars[i].split('=');
document.$_GET[urlVarPair[0]] = urlVarPair[1];
}
}
}
})();
</script>
然后使用它:
<script type="text/javascript">
var conts = '<li><a title="back to list" href="/menu.html?module='+document.$_GET['module']+'">Unit Listing</a></li>';
document.write(conts);
</script>
对我有用。