【问题标题】:How to pass multiple argument and get data value into another screen titanium如何将多个参数传递并获取数据值到另一个屏幕钛
【发布时间】:2013-05-17 13:51:34
【问题描述】:

将值从一个屏幕传递到另一个屏幕时,第二个参数未定义

// First Screen Code.

    args [] = {name:'ABCD',value:'1234'};
    argsToken [] = {token:'ABC123DEF456',value:'VALID'};
    var Window = Alloy.createController('SecondView',args,argsToken).getView();

// Second Screen Code
// First argument
    var args = arguments[0] || {};
    var data = [];  
    data    = args;
    Titanium.API.info('data Value::'+data);

// 第二个参数

var argsToken = arguments[1] || {};
var token = [];
token = argsToken;
Titanium.API.info('Token Value::'+token);

从这里我得到的数据是{name:'ABCD',value:'1234'}

对于带有 argsToken 的第二个参数 [1],它变得未定义。

我无法获得第二个参数{token:'ABC123DEF456',value:'VALID'}

【问题讨论】:

    标签: titanium titanium-mobile titanium-modules


    【解决方案1】:

    我还没有完全跟上 Alloy 的速度,但函数定义显示 Alloy.createController 接受 2 个参数,而您的示例有 3 个。 http://docs.appcelerator.com/titanium/latest/#!/api/Alloy-method-createController

    我相信你需要做这样的事情:

    // First Screen Code.
    
        var args = [];
        args.push({name:'ABCD',value:'1234'});
        args.push({token:'ABC123DEF456',value:'VALID'});
        var Window = Alloy.createController('SecondView', args).getView();
    
    // Second Screen Code
    // First argument
        var arg1 = args[0] || {};
        var data = [];  
        data    = arg1;
        Titanium.API.info('data Value::'+data.name);
    
    // Second argument
    
    var argsToken = arg[1] || {};
    var token = [];
    token = argsToken;
    Titanium.API.info('Token Value::'+token.token);
    

    【讨论】:

      【解决方案2】:

      问题在于 args 是一个参数,在调用 createController 时可以将其拆分为另一个参数。所以解决方案是一个维度数组。所以如果你想得到第一个 json 对象,你应该调用 arguments[0][0].name 或 arguments[0][0].value 等等......

      【讨论】:

        【解决方案3】:

        // 首屏代码。

        args [] = {name:'ABCD',value:'1234'};
        argsToken [] = {token:'ABC123DEF456',value:'VALID'};
        sendData = {
            args1 : args,
            argsToken1 : argsToken
        };
        var Window = Alloy.createController('SecondView',sendData).getView();
        

        // 第二屏代码

        // 第一个参数

        var args = arguments[0] || {};
        var data = [];  
        data = args.args1;
        Titanium.API.info('data Value::'+data);
        

        // 第二个参数

        var argsToken = arguments[1] || {};
        var token = [];
        token = args.argsToken1;
        Titanium.API.info('Token Value::'+token);
        

        它会起作用的! :)

        【讨论】:

          【解决方案4】:

          你可以像这样使用 Ti.App.fireEvent

          Ti.App.fireEvent("CALLCROPWINDOW", {
          
                 my_image : galimg
          
              });
          
              Ti.App.addEventListener('CALLCROPWINDOW', function(e){
          
                  var crop = new CROPIMAGE();
          
                  view.add(crop);
          
                  Ti.App.fireEvent("webPageReady",{
          
                   my_image : e.my_image
          
                  });
          
               });
          

          【讨论】:

            猜你喜欢
            • 2021-07-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-02-21
            • 2017-01-07
            • 1970-01-01
            • 2021-01-06
            • 1970-01-01
            相关资源
            最近更新 更多