// 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();的更好版本。如果您感到困惑,可以更换它们。