【问题标题】:TideSDK: Is there a way to pass data to a child window?TideSDK:有没有办法将数据传递给子窗口?
【发布时间】:2013-02-09 22:41:35
【问题描述】:

当我从主窗口创建子窗口时,我想向它传递一个 JavaScript 对象,但我不确定是否真的有办法做到这一点?

使用 TideSDK 创建的两个窗口每个都有自己的 JavaScript 环境,就像两个浏览器窗口一样(如果我理解正确的话,它们就是这样),所以你不能从另一个窗口访问一个窗口中的变量。另一方面,您可以从您所在的窗口访问其他窗口(例如使用Ti.UI.getOpenWindows)。那么……有没有办法呢?

我认为有一些解决方法是可行的,但没有一个是非常简单的,并且每个都使用其他的东西而不是纯 JavaScript:

  • 使用Ti.DatabaseTi.Filesystem存储我要传递的数据,然后从子窗口中取回
  • 将数据作为 GET 变量传递到新窗口,例如:Ti.UI.createWindow("app://page.html?data1=test&data2=foobar");

【问题讨论】:

    标签: javascript tidesdk


    【解决方案1】:

    您可以将对象分配给子窗口对象

    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');
    

    【讨论】:

      【解决方案2】:

      我知道这已经得到解答,但我遇到了一种模仿 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>
      

      对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-24
        • 2012-02-25
        • 2021-11-19
        相关资源
        最近更新 更多