1

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

// 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'}

4

4 回答 4

0

// 第一个屏幕代码。

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

它会起作用的!:)

于 2013-10-05T06:50:06.370 回答
0

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

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

// 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);
于 2013-05-30T20:45:03.473 回答
0

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

于 2013-09-11T23:39:47.097 回答
-1

您可以像这样使用 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

        });

     });
于 2013-05-30T10:28:13.957 回答