2014-06-06 1 views
6

Sono nuovo in Angular e cerco di dichiarare gridOption per ng-grid all'interno di una funzione in costroller.Ng-grid Impossibile impostare la proprietà 'gridDim' di indefinito

Si causano un errore:

TypeError: Impossibile impostare la proprietà 'gridDim' di indefinito

ho provato a risolverlo utilizzando $ scope.apply e ng, se nel modello. Ma niente da questo sta funzionando per me.

Grazie per qualsiasi consiglio:

metodo del controller:

$scope.getTest = function() { 

    $http.get('http://www.iNorthwind.com/Service1.svc/getAllCustomers') 
    .success(function (data, status, headers, config) { 
      //$scope.myData = data; 
      console.log('Sucess' + data); 
      // definition for ng-grid table 
      $scope.myData = [{ name: "Moroni", age: 50 }, 
          { name: "Tiancum", age: 43 }, 
          { name: "Jacob", age: 27 }, 
          { name: "Nephi", age: 29 }, 
          { name: "Enos", age: 34}]; 
      $scope.gridOptions = { data: 'myData' }; 
      //$scope.$apply(); 
    }) 
    .error(function(data, status, headers, config) { 
      $scope.myData = data; 
    }); 

}; 

risposta

17

Ho appena incontrato questo problema ieri ....

Allo scopo di rendere inizialmente, ng-grid ha bisogno delle opzioni da fornire inizialmente, non dopo che la promessa di $http è stata risolta.

Sposta la tua chiamata $scope.gridOptions = { data: 'myData' } al di fuori della tua promessa di successo e il tuo problema dovrebbe andare via.

+1

Ma voglio dimostrare tabella con i dati solo in caso di successo. – redrom

+1

Quindi puoi mettere un ng-show/ng-hide sul controllo della griglia e guidare quella logica come preferisci. O anche ng-se non vuoi che il DOM per il rendering – Brocco

+0

aiuti davvero! Grazie mille – Snowwolf

0

Si sta lavorando per me quando definiamo al di fuori di metodi di successo e di errore 'gridOptions' come illustrato di seguito:

$scope.getCategory = function(){ 
      var listURL = "/sites/AwardTrackingSystem/_api/web/lists/getByTitle('Categories')/items"+ 
         "?$select=Id,Title";           
         srvcQuerySPList.getItems(listURL) 
      .then(
       function(data){ 
           $scope.allCategory = data; 
           }, 
       function(data){alert('Error Awards---------------'+JSON.stringify(data));} 

      ); 

     }; 
     $scope.gridOptions = { data: 'allCategory'};