Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Отображение данных в угловой сетке пользовательского интерфейса

Автор вопроса: corryОтветов: 4

У меня проблема с отображением данных в таблице сетки пользовательского интерфейса.

Я определил API, из которого я хочу показать данные, и я могу получить к ним доступ через браузер, но проблема заключается в отображении визуализированных данных. Вот мой угловой контроллер, в котором я определил функцию для получения данных из API:

        getData();

        $scope.myData = [];

        $scope.gridOptions.data = []

        $scope.gridOptions.data = $scope.myData;

        function getData() {
            $http.get('/load/').success(function (data) {
                data.forEach( function( row, index ) {
                    $scope.myData.push(data);
                });
                $scope.gridOptions.data = data;
                console.log('data from api', data);
            })
        };

и я получил пустую сетку. введите здесь описание изображения

Данные отображаются в консоли:

Я также пытался разобрать данные var jsonObj = JSON.parse(data);, но получил ошибку Неожиданный токен o в Object.parse (собственный)

javascriptjsonangularjsangular-ui-grid

Ответы

Ответ 1 · рейтинг 1 · Morgan Hayes

Используйте эту функцию, чтобы поместить ваши данные в массив. Проверьте свои данные в консоли, углубитесь в свои данные. (нажмите на стрелку) Мои данные находятся в .doc, ваши могут быть в другом атрибуте. измените "items[i].doc" на правильный атрибут для ваших данных.

// pass data.rows to function items params
// the type is to filter
function fncArray(items,type) {
    var filtered = [];
    for(var i=0; i < items.length; i++)  {
        if ( items[i].doc.type = type){
            filtered.push(items[i].doc);
        }
    }
    // console.log(filtered);
   return filtered;
}

это использовать без фильтрации

// pass data.rows to function items params
function fncArray(items) {
    var newData= [];
    for(var i=0; i < items.length; i++)  {
            newData.push(items[i].doc);
    }
   return newData;
}

Ответ 2 · oto lolua

вы можете написать $scope.$apply(), чтобы вызвать изменения в контроллере

Ответ 3 · Ananda Naphade

Возвращаемые данные должны быть ["ключ":[объект, объект, объект, объект]] в этой форме. 1) преобразовать эти данные с помощью var jsonObj = JSON.parse(data); 2) успешно использовать это выражение !$scope.$$phase?$scope.$apply():null;

Ответ 4 · corry

Извините, ребята, моя ошибка здесь. Нет необходимости в разборе. Я определил неправильные столбцы Defs здесь, в контроллере :facepalm:

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы