Пустой массив после добавления элементов с помощью Titanium Appcelerator mobile 1.7.2 - PullRequest
2 голосов
/ 17 октября 2011

Я использую мобильный API Titanium Appcelerator 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 (для false) и 'len: 0' соответственно.Кто-нибудь знает почему?

Адам

Редактировать: createPasswordTextField по существу

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

Ответы [ 3 ]

0 голосов
/ 17 октября 2011

оператор журнала должен выглядеть следующим образом для просмотра содержимого массивов

Ti.API.log(JSON.stringify(container.textBoxArray));
0 голосов
/ 20 ноября 2011

Я тоже с этим сталкивался.При добавлении массива в объект 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 ); просто возвращает ссылку на объект.

0 голосов
/ 17 октября 2011

У меня тоже были проблемы с 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);
...