2017-07-03 5 views
0

Quand je charge les données à Ui-grille, j'ai cette erreur colDef.name or colDef.field property is requiredcolonne ui-grille d'erreur definiton

Je ne trouve pas sur Internet une solution pour résoudre ce problème.

C'est ma fonction pour remplir la grille:

$scope.ApiGet = function() { 
    $.ajax({ 
     url: //an url, 
     async: false, 
     type: 'POST', 
     dataType: 'json',    
     success: function (data, textStatus, xhr) { 
      var token = data.access_token; 
      console.log(token); 
      $.ajax({ 
       url: //an other url 
       async: false, 
       crossDomain: true, 
       type: "GET", 
       datatype: "json",      
       success: function (datas, textStatus, request) { 
        console.log(datas[0].previewContent);       
        angular.forEach(datas, function (value) { 
         console.log(value); 
         debugger; 
         if (value) { 
          $scope.rowCollection = $scope.rowCollection.concat(value.previewContent); 
         } 

        }) 
        // console.log($scope.rowCollection); 
       }, 
       error: function (jqXHR, textStatus, errorThrown) { 

        // $scope.addAlert(jqXHR.responseText != "" ? jqXHR.responseText : jqXHR.statusText); 
       } 
      }) 

Et le Html

<div ng-controller="listCtrl" ng-init="ApiGet()"> 
    <div ui-grid="{ data: rowCollection }" class="myGrid"></div> 
</div> 

Répondre

0

puisque vous utilisez jquery AJAX pour envoyer des requêtes http, le cycle peut digérer angulaire être arrêté. Par conséquent, même si vous affectez des valeurs $scope.rowCollection, il ne sera pas lié au code HTML.

une chose que vous pouvez faire est de commencer le cycle de digestion en utilisant $scope.$apply() après la réponse http

success: function(datas, textStatus, request) { 
    console.log(datas[0].previewContent); 
    angular.forEach(datas, function(value) { 
     console.log(value); 
     debugger; 
     if (value) { 
      $scope.rowCollection = $scope.rowCollection.concat(value.previewContent); 
     } 

    }) 
    $scope.$apply(); 
}, 

OU

vous pouvez utiliser $http au lieu de $.ajax pour envoyer des requêtes http

+0

ma demande étaient async = false, alors quand j'ajouté portée de $ appliquent $() il me dit $ Digest déjà en cours, donc je mis des demandes de Async =. vrai, alors j'ai la même erreur. J'ai essayé de créer gridOption avec la définition de colum, toujours la même –

0

J'ai trouvé la solution:

définir un

$scope.gridOptions {data:mydata, 
        columnDefs:[{field:'field1',displayName:'Field1", width:"*"}, 
           {field:'field2',displayName:'Field2", width:"*"}] 

Puis, en Html:

<div ng-controller="listCtrl" ng-init="ApiGet()"> 
    <div ui-grid="gridOptions" class="myGrid"></div> 
</div>