0

我试图找出在自定义循环中获取数组值的最佳方法。这是我的代码,我不确定这是否是一种有效的方法,或者还有另一种方法:

var win = Ti.UI.createWindow({ backgroundColor: '#fff', layout:'vertical' });

    var data = [
    {title:'Row 1',customValue:'123'},  
    {title:'Row 2',customValue:'345'},  
    {title:'Row 3',customValue:'234'},
    ];

    for(var i = 0, l = data.length; l--; i++) {

    thisObject = data[i];   

    var container = Titanium.UI.createView({
        left: 10,
        right: 10,  
        customValue:thisObject.customValue
    });

    var label = Ti.UI.createLabel({
        text : thisObject.title,        
        width : 'auto',
        height : 25     
    });

    container.add(label);
    win.add(container);
    container.addEventListener('touchend', function(e) {        
        alert(this.customValue);            
    });
    }

    win.open();

谢谢你。

4

1 回答 1

3

您的解决方案是可以接受的,并且在概念上与我的方法相似。但是,我建议您在必要时始终为此自定义数据使用唯一的属性名称,并允许它通过使用对象来存储许多属性及其值。如果将来 Appcelerator 决定创建一个名为customValue您的属性,您可能会满足于 Titanium API 并遇到不希望的结果。

传递/存储您的自定义数据:

var container = Titanium.UI.createView({
     left: 10,
     right: 10,
     myUniqueCustomDataObject: { customValue: thisObject.customValue }
});

像这样访问您的自定义数据对象属性:

container.addEventListener('touchend', function(e) {
     alert(this.myUniqueCustomDataObject.customValue);
});
于 2011-11-03T22:50:40.653 回答