我有一个json,在这个json中有一个要在<td>
中迭代的数组。
我的功能就像我必须根据用户输入创建表。用户提供行数,输入列和输出列的输入。所以我有三个数组,即$ rootScope.input_columns,$ rootScope.output_columns和$ rootScope.rows,它们包含用户提供的用于创建表的数据。现在在input_columns中有一个数组,其中包含一些需要在行单元格上显示的信息。但是用我当前的代码,它给了我空白行。
Controller :
var app = angular.module('rulesApp');
app.controller('myController2', ['$scope', '$rootScope',function($scope, $rootScope){
var inputcol=[];
$rootScope.input_col=$scope.no_of_input;
$rootScope.output_col=$scope.no_of_output;
$rootScope.rows=$scope.no_of_row;
for(var i=0;i<$rootScope.input_col;i++){
inputcol.push({
id: inputcol.length,
dropped: false,
dataType:'',
name:'',
type:'input',
path:'',
rowCellValue:[],
rowCellValueOutput:[]
});
}$rootScope.input_columns=inputcol;//here i get input_columns json, Similarly json are made for output_columns and rows
$scope.statementSelected = function(branch, selected_branches) {
if(branch.selected) {
for(var i = 0; i < $rootScope.input_columns.length; i++) {
//Here i add an array inside input_columns.rowCellValue $rootScope.input_columns[i].rowCellValue.push($rootScope.rows[i].rowCellValue);
}
})
添加input_columns的结构
这是我的html代码:
<tbody>
<tr ng-repeat="row in rows"><!--It iterates on row json -->
<td><input type="checkbox"></td>
<!--Here i want that in row cells input_columns.rowCellValue data gets populate on row cell for input column -->
<td ng-repeat="col in input_columns.rowCellValue">{{(col == "") && "<enter data>" || (col.split("/")[3])}}</td>
<!--Here i want that in row cells output_columns.rowCellValueOutput data gets populate on row cell for output column -->
<td ng-repeat="col in output_columns.rowCellValueOutput" ng-click="openDialog($event)">{{(col == "") && "<enter data>" || (col.split("/")[3])}}</td>
</tr>
</tbody>
我想要一个这样的结构
但是我得到空白行
请任何人可以帮助我完成此任务。是否存在我没有迭代input_columns的问题,所以我没有得到input_columns.rowCellValue值。如何获取表列中的input_columns.rowCellValue的值?无论如何,我是否可以使用两个ng重复,第一个ng-repeat我可以得到input_column值[input_column中的col],第二个ng-repeat我可以得到rowCellValue [col.rowCellValue]中的单元格。
我正在尝试一些解决方案,并想出了一种访问rowCellValue的方法:
这是修改后的html代码
<tbody>
<tr ng-repeat="row in rows"><!--It iterates on row json -->
<td><input type="checkbox"></td>
<!--Here i want that in row cells input_columns.rowCellValue data gets populate on row cell for input column -->
<!--here with $index i am getting first value of rowCellValue in entire column can i iterate it with using rows length -->
<td ng-repeat="col in input_columns">{{(col.rowCellValue[$index] == "") && "<enter data>" || (col.rowCellValue[$index].split("/")[3])}}</td>
<!--Here i want that in row cells output_columns.rowCellValueOutput data gets populate on row cell for output column -->
<td ng-repeat="col in output_columns" ng-click="openDialog($event)">{{(col.rowCellValueOuput[$index] == "") && "<enter data>" || (col.rowCellValueOutput[$index].split("/")[3])}}</td>
</tr>
</tbody>
这是我想要用于input_column的实际表:
但是我得到这个:
我可以使用行长而不是$ index来迭代col.rowCellValueOutput [$ index]吗?并针对每一列。如果是,请为此提出一些建议。
最佳答案
您是否尝试过将其放入JSON对象并遍历JSON。看起来您想要做的是,每次创建新行时,inputCol
和outputCol
都将尝试输出每一行的所有内容。
//pseudo code
ng-repeat row in rows
ng-repeat input in inputs
ng-repeat output in outputs
每次循环
rows
时,所有inputs
和outputs
数据都会再次输出,使每一行都相同。如果您制作了JSON对象并执行了类似的操作,
ng-repeat row in rows
ng-repeat input in row.input
ng-repeat output in row.output
您的JSON看起来像
var rows = [{ input: [ "row1", "col2" ], output: [ "col3", "col4" ] },
{ input: [ "row2", "col2" ], output: [ "col3", "col4" ] }];