在钛appacelerator中设置View和TextView的ID

时间:2016-02-05 18:28:09

标签: javascript textarea appcelerator

我正在创建一个for来随机创建textAreas,但我需要知道用户按下了哪个textArea。

有没有办法为每个textArea输入一个唯一的ID?

我如何创建textView:

var txtArea = Ti.UI.createTextArea({
  color : '#000',
  backgroundColor : 'transparent',
  font: {
    fontSize : 28,
    fontWeight : 'normal',
  },
  editable : false,
  textAlign : 'left',
  value : a[i],
  textAlign : 'center',
  top : '30%',
  width : '100%',
  height : '100%'
});

我试图输入“id:i”,但所有textAreas都返回了相同的ID。

2 个答案:

答案 0 :(得分:2)

建议不要向Titanium代理添加自定义属性。这就是我要做的事情(基于我对你想要达到的目标的猜测):

for(var i = 0; i < 10; i++){
    var txtArea = Ti.UI.createTextArea({
        value : "test n " + i,
        textAlign : 'left',
        textAlign : 'center',
        top : '30%',
        width : '100%',
        height : '100%'
    });
    (function(){
        var id = i;
        txtArea.addEventListener('click',function(){
            console.log(id);
        });
    })();
}

答案 1 :(得分:0)

如果你想分配一个数字ID,你是正确的,但我认为你必须在表视图的行中插入所有TextAreas。这是因为您从表视图行获取的ID不是来自Textarea。如果您在表格视图行中插入, id的尝试是正确的。

您创建textArea的代码是这样的:

var txtArea = Ti.UI.createTextArea({
    id: i,
    value : "test n " + i,
    textAlign : 'left',
    textAlign : 'center',
    top : '30%',
    width : '100%',
    height : '100%'
});

您可以进一步获取每行id只需添加点击事件监听器,特别是:

tableViewRowName.addEventListener('click', function(e) {
    console.log(e.source.id);
}

如果有效,请告诉我,不要犹豫与我联系。

完整示例

在您的控制器中

var win = Ti.UI.createWindow();
var scrollableView = Ti.UI.createScrollView();
var table = Ti.UI.createTableView();
var tableData = [];
for(var i=0;i<list.length;i++){
    var row = Ti.UI.createTableViewRow();
    var txtArea = Ti.UI.createTextArea({
       id: i,
       value : "test n " + i,
       textAlign : 'left',
       textAlign : 'center',
       top : '30%',
       width : '100%',
       height : '100%'
   });        

   row.add(txtArea);
   tableData.push(row);
}
table.setData(tableData);
scrollableView.add(table);
win.add(scrollableView);
win.open();

这就是我的意思:在你的结构中你已经有一个空的表视图。 你在控制器中用一个循环填充这个表(对于或当它是相同的)。

每次迭代都会使用相应的TextArea推送行,并在循环结束时使用setData填充表格

此致