Fiddle here。但它没有显示任何东西。我无法弄清楚原因。
2D数组的结构如:
数组([0] =>数组([0] =>名称1 =>年龄[2] => CGPA)1 =>数组([0] => Alex 1 => 23 [2] => 2.5)[2] =>数组([0] => Bob 1 => 24 [2] => ; 3)[3] =>数组([0] =>迈克1 => 22 [2] => 3.9))
我们需要将此数组中的数据加载到 YUI模块中创建的数据表中。
所以从我的努力中得到的理解,我认为我们不能在YUI模块块中编写我们的循环或代码。(告诉我,如果我错了)否则很容易,我可以简单地使用for循环。
我仍然知道我需要在这里使用for循环。但是我不知道如何创建逻辑,因为我无法将代码插入到YUI模块的代码块中。 代码如下。
为了便于理解,我通过引用给定数组的索引插入了数据。它工作得很好,但我们不能使用像0 1 2 3
等索引,因为我们不知道2D array
及其包含的1D数组的长度是多少。 那么有人可以帮我解决这个问题吗?
M.mod_quiz.init_dataTable = function(Y, params) {
var $rowArray= params.key1;
alert($rowArray.length);
/*for (i=0; i<$rowArray.length; i++) {
for (j=0; j<$rowArray[0].length; j++) {
}
}*/
YUI().use("datatable-sort", function(Y) {
var cols = [
/*for (i=0; i<$rowArray.length; i++) {
{key:"Column "+i , label: $rowArray[0][i] , sortable=true}
}*/
{key:"Company", label:$rowArray[0][0], sortable:true},
{key:"Phone", label:$rowArray[0][1], sortable:true},
{key:"Contact", label:$rowArray[0][2], sortable:true}
],
data = [
{Company:$rowArray[1][0], Phone:$rowArray[1][1], Contact:$rowArray[1][2]},
{Company:$rowArray[2][0], Phone:$rowArray[2][1], Contact:$rowArray[2][2]},
{Company:$rowArray[3][0], Phone:$rowArray[3][1], Contact:$rowArray[3][2]}
],
table = new Y.DataTable({
columns: cols,
data : data,
summary: "Contacts list",
caption: "Table with simple column sorting"
}).render(params.key2);
});
};
答案 0 :(得分:1)
看起来您想要创建一个DataTable
对象,但您的要求是构造函数的命名columns
属性必须是动态的,而不是静态的。正确?
仅仅因为大多数YUI示例都将columns
属性显示为内联数组,并不意味着它必须以这种方式完成。你可以动态构建它......
YUI().use("datatable-sort", function(Y) {
// Build the column definitions dynamically, based on the names in $rowArray[0].
var cols = [];
for (i=0; i<$rowArray[0].length; i++) {
cols.push( { key:$rowArray[0][i], label:$rowArray[0][i], sortable:true } );
}
var data = [
...
至于你提供的JSFiddle(谢谢!),有一些对Name / Age / CGPA和Company / Phone / Contact的引用混淆。你需要理顺它。即使在那之后,JSFiddle也会例外,但我没有时间。您可以使用浏览器的内置调试器来捕获异常并进行调试。