无法将数据表添加到合金钛的tableRow中

时间:2014-02-18 11:36:29

标签: javascript titanium titanium-alloy

// Controller.js

 $.tblRow_CurrentRow = [];

 var currentList = [
    {plan:' Plan1',date:'18 Feb 2014',tier:'one'},
    {plan:'Plan2',date:'18 Dec 2013',tier:'two'},
    {plan:'Plan3',date:'20 Feb 2014',tier:'three'},
  var data = [];


    for(var i=0;i < currentList.length ;i++){

    if(i%2 == 0){

        $.tblRow_CurrentRow[i].backgroundColor = "#FFFFFF";
    }

    else{

        $.tblRow_CurrentRow[i].backgroundColor = "#ABC012";
    }

    // Set text data to the label 
    $.lbl_Plan.text = currentList[i].plan;
    $.lbl_Date.text = currentList[i].date;
    $.lbl_Tier.text = currentList[i].tier;

    // Adding label to the TableRow!
    $.tblRow_CurrentRow[i].add($.lbl_Plan);
    $.tblRow_CurrentRow[i].add($.lbl_Date);
    $.tblRow_CurrentRow[i].add($.lbl_Tier); 

            data.push($.tblRow_CurrentRow[i]);
 }

$.tbl_TabeleView.data = data;

// Controller.xml

<TableView id = "tbl_TabeleView" >

    <TableViewRow id= "tblRow_CurrentRow">

        <Label id = "lbl_Plan"></Label>
        <Label id = "lbl_Date"></Label>
        <Label id = "lbl_Tier"></Label>

    </TableViewRow>

</TableView>

将dataList添加到合金钛中的tableviewRow的问题。

错误消息  message =“'undefined'不是对象(评估'$ .tblRow_CurrentRow [i] .add')”;

1 个答案:

答案 0 :(得分:1)

在您的视图中,您将$ .tblRow_CurrentRow定义为单个TableViewRow。您不能将其视为控制器中的对象数组。我修改了你的代码以使其工作,所以你可以看到它应该如何:

index.js:

$.tblRow_CurrentRow = [];

 var currentList = [
    {plan:' Plan1',date:'18 Feb 2014',tier:'one'},
    {plan:'Plan2',date:'18 Dec 2013',tier:'two'},
    {plan:'Plan3',date:'20 Feb 2014',tier:'three'},
];

var data = [];


for (var i=0; i < currentList.length; i++){
    $.tblRow_CurrentRow[i] = $.UI.create('TableViewRow', {
        backgroundColor: (i % 2 === 0 ? '#FFFFFF' : '#ABC012'),
        layout: 'vertical',
    });

    // Set text data to the label
    $.tblRow_CurrentRow[i].add(
        $.UI.create('Label', { text: currentList[i].plan } )
    );
    $.tblRow_CurrentRow[i].add(
        $.UI.create('Label', { text: currentList[i].date } )
    );
    $.tblRow_CurrentRow[i].add(
        $.UI.create('Label', { text: currentList[i].tier } )
    );

    data.push($.tblRow_CurrentRow[i]);
}

$.tbl_TabeleView.data = data;

$.getView().open();

INDEX.XML:

<Alloy>
    <Window>
        <TableView id="tbl_TabeleView" />
    </Window>
</Alloy>

基本上查看tempalte只包含简单的Window和空TableView,我们将添加行。在你的for循环中,我正在创建设置不同背景的TableViewRow对象,然后添加你需要的所有3个标签。

垂直布局让我们可以很好地一个接一个地显示标签 方法$ .UI.create('TableViewRow')是Ti.UI.createTableViewRow();的更好版本。如果它让您感到困惑,可以替换它们。