Интеграция Ionic (Angularjs) и Devextreme Datagrid не смогла отобразить данные из $http JSON

Я разрабатываю ионное приложение с помощью Angularjs. В моем приложении я должен интегрироваться с компонентом devextreme, таким как Datagrid.

Когда я попытался поместить JSON локально и отобразить в сетке данных devextreme, он отлично отобразился. Однако, когда я получаю данные JSON из веб-служб с помощью $http и отображаю их в devextreme Datagrid. Мне не удалось отобразить его, но когда я вывожу данные, я могу получить данные и просто не могу отобразить их в компоненте Devextreme Datagrid.

Ниже приведен мой пример кода

HTML-код

<ion-view view-title="Dashboard">
  <ion-content class="padding">
    <div dx-data-grid="{
        dataSource: customers,
        keyExpr: 'ID',
        columns: ['toponymName', 'fcodeName', 'population'],
        sorting: { mode: 'single' },
        pager: { visible: true },
        paging: { pageSize: 10 },
        editing: {
            editEnabled: false,
            editMode: 'row',
            insertEnabled: false,
            removeEnabled: false
        },
        allowColumnReordering: true,
        allowColumnResizing: true,
        filterRow: { visible: true },
        searchPanel: { visible: false },
        selection: { mode: 'single' }
    }"></div>
  </ion-content>
</ion-view>

Код контроллера

.controller('DashCtrl', function($scope,  $http) {

    $http({
         method : 'GET',
         url : 'http://10.194.121.224/MobileGo_WebAPI/api/MST_CUSTOMER',
         headers: { 
          'Accept': 'application/json',
          'Content-Type': 'application/json' 
          }
    }).then(function successCallback(response) {
        $scope.customers = response.data;
        console.log(response.data)
    }, function errorCallback(response) {
        console.log(response.statusText);
    });

    // var customers = [{
    //     ID: 1,
    //     CompanyName: "Super Mart of the West",
    //     CompanyHolder: "Chan Yoong Hon",
    //     City: "Bentonville",
    //     State: "Arkansas"
    // }, {
    //     ID: 2,
    //     CompanyName: "Electronics Depot",
    //     CompanyHolder: "Lee Kam Fei",
    //     City: "Atlanta",
    //     State: "Georgia"
    // }];
    // $scope.customers = customers;

})

Как и то, что я пробовал для кода комментариев, жесткого кода файла JSON. Он может успешно отображаться. Если я получу его из $http, он не сможет отобразить данные в dx-data-grid.


person Chan Yoong Hon    schedule 03.07.2018    source источник


Ответы (1)


Это вопрос времени. Вы должны вызвать метод refresh после асинхронной загрузки данных в сетку.

Виджет не может отслеживать изменения, внесенные в источник данных третьей стороной. Чтобы в этом случае обновить данные в виджете, вызовите этот метод. Источники данных столбцов подстановки будут обновлены вместе с основным источником данных.

Источник: Документация

Все, что вам нужно сделать, это выполнить шаги, описанные здесь, а затем вызовите метод refresh для виджета.

person JSON Derulo    schedule 09.07.2018