У меня есть json, и внутри этого json есть массив, который я хочу повторить в <td>
. Моя функциональность похожа на то, что я должен создать таблицу на основе ввода пользователем. Пользователь предоставляет ввод для количества строк, столбцов ввода и столбцов вывода. Поэтому у меня есть три массива: $ rootScope.input_columns, $ rootScope.output_columns и $ rootScope.rows, которые содержат данные, предоставленные пользователем для создания таблицы. Теперь в input_columns есть массив, который содержит некоторую информацию, которую мне нужно показать в ячейке строки. Но с моим текущим кодом он дает мне пустой ряд.
Это мой контроллер:
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.row=$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 в столбцах таблицы? Есть ли в любом случае, что я могу перебирать массивы input_columns и output_columns в теге проблем с массивом строк?
массив rows
и все остальные массивы в вашем коде находятся в $rootScope
. Но код, который выполняется в вашем представлении, также просматривается в $scope
который присваивается этому представлению с помощью указанного контроллера. Если вы хотите использовать свои данные через $rootScope
вы должны использовать $parent
в своем представлении:
<tr ng-repeat="row in $parent.rows">
и так же во всех других местах
$scope
наследует от $rootScope
а представление всегда имеет доступ к $ rootScope
$parent
в представлениях для прямого и более быстрого доступа
rows
. Почему вы используете$rootScope
в контроллере для хранения данных контроллера?