Я хочу перебрать массив внутри JSON в столбце таблицы через угловой

0

У меня есть 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

Изображение 174551

Это мой 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 == "") && "&lt;enter data&gt;" || (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 == "") && "&lt;enter data&gt;" || (col.split("/")[3])}}</td>              
    </tr>
</tbody>

Но я получаю пустые строки Изображение 174551

Пожалуйста, помогите мне в этой задаче. Есть проблема, что я не повторил input_columns, поэтому я не получаю значения input_columns.rowCellValue. Как я могу получить значения input_columns.rowCellValue в столбцах таблицы? Есть ли в любом случае, что я могу перебирать массивы input_columns и output_columns в теге проблем с массивом строк?

  • 0
    В области видимости вашего контроллера нет массива rows . Почему вы используете $rootScope в контроллере для хранения данных контроллера?
  • 0
    Массив строк такой же, как массив input_column. Да, я использую $ rootScope для хранения данных контроллера и для использования этих данных в другом контроллере
Показать ещё 4 комментария
Теги:

1 ответ

0

массив rows и все остальные массивы в вашем коде находятся в $rootScope. Но код, который выполняется в вашем представлении, также просматривается в $scope который присваивается этому представлению с помощью указанного контроллера. Если вы хотите использовать свои данные через $rootScope вы должны использовать $parent в своем представлении:

<tr ng-repeat="row in $parent.rows">

и так же во всех других местах

  • 0
    вы не учитываете, что $scope наследует от $rootScope а представление всегда имеет доступ к $ rootScope
  • 0
    Да, но, как я знаю и видел ранее, лучше использовать $parent в представлениях для прямого и более быстрого доступа
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню