// 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>


在合金钛中向tableviewRow添加dataList的问题。

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

最佳答案

在您的视图中,您将$ .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>


基本上,视图临时文件仅包含简单的Window和空的TableView,我们将在其中添加行。在您的for循环中,我将创建设置不同背景的TableViewRow对象,然后添加所需的所有3个标签。

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

10-08 09:11