我正在使用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... )
}
答案 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 );
只返回一个对象引用。