使用Titanium Appcelerator mobile 1.7.2添加元素后清空数组

时间:2011-10-17 14:13:13

标签: javascript arrays titanium appcelerator

我正在使用Titanium Appcelerator mobile API 1.7.2。

创建数组时,我得到了一些奇怪的结果。这是我的语法吗?

container.textBoxArray = new Array();
container.textBoxArray[0] = createPasswordTextField(options, '0%');
container.textBoxArray[1] = createPasswordTextField(options, '25%');
Ti.API.log(container.textBoxArray == null);
Ti.API.log('len: ' + container.textBoxArray.length);

输出结果分别为0(假)和'len:0'。谁知道为什么?

亚当

编辑: createPasswordTextField本质上是

function createPasswordTextField(options, left){
    return Ti.UI.createTextField( options... )
}

3 个答案:

答案 0 :(得分:0)

我也遇到了Titanium和Arrays的问题。你能做什么,试试这个:

container.textBoxArray = [];
container.textBoxArray.push(createPasswordTextField(options, '0%'));
container.textBoxArray.push(createPasswordTextField(options, '25%'));
Ti.API.log(container.textBoxArray == null);
Ti.API.log('len: ' + container.textBoxArray.length);

答案 1 :(得分:0)

log语句应如下所示,以查看数组内容

Ti.API.log(JSON.stringify(container.textBoxArray));

答案 2 :(得分:0)

我也遇到过这种情况。将数组添加到TiProxy对象(视图,窗口,按钮等)时,它无法按预期工作。您需要在代理中“关闭”数组,然后重新设置它。我不知道这是一个错误还是只是对TiProxy对象的属性的限制。以下示例在iOS Titanium Mobile SDK 1.7.5下的行为相同:

var proxy = Ti.UI.createView();  //this can be any TiProxy object

proxy.someArray = [];
proxy.someArray.push( '1' );
proxy.someArray.push( '2' );
Ti.API.info("Array modified directly on TiProxy object" );
Ti.API.info(proxy.someArray );

var myArray = [];
myArray.push( '1' );
myArray.push( '2' );
proxy.someArray = myArray;
Ti.API.info("Array modified outside TiProxy object" );
Ti.API.info( proxy.someArray );

proxy.someArray.push( '3' );
Ti.API.info("This will be unchanged" );
Ti.API.info(proxy.someArray );

var changeArray = proxy.someArray;
changeArray.push('3');
proxy.someArray = changeArray;
Ti.API.info("This is how you must do it." );
Ti.API.info(proxy.someArray );

返回:

[INFO] Array modified directly on TiProxy object
[INFO] []
[INFO] Array modified outside TiProxy object
[INFO] [ 1,  2 ]
[INFO] This will be unchanged
[INFO] [ 1,  2 ]
[INFO] This is how you must do it.
[INFO] [ 1, 2, 3 ]

找出Android上的行为要困难得多,因为Ti.API.info(proxy.someArray );只返回一个对象引用。