2014-06-06 13 views
6

Jestem nowy w Angular i próbuję zadeklarować gridOption dla ng-grid W ramach funkcji w costroller.Ng-grid Nie można ustawić właściwości 'gridDim' z undefined

to spowodować błąd:

TypeError: nie można ustawić właściwość 'gridDim' o nieokreślonej

próbowałem go rozwiązać za pomocą $ scope.apply i ng-jeśli w szablonie. Ale nic z tego nie działa dla mnie.

Dzięki za wszelkie rady:

metoda kontrolera:

$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; 
    }); 

}; 

Odpowiedz

17

po prostu wpadł na ten problem wczoraj ....

W celu wstępnego renderowania, ng-grid potrzebuje opcje do dostarczenia początkowo, nie po tym, jak Twoja obietnica zostanie rozwiązana.

Przenieś swoje połączenie $scope.gridOptions = { data: 'myData' } poza obietnicę sukcesu, a problem powinien zniknąć.

+1

Ale chcę pokazać tabelę z danymi tylko w przypadku sukcesu. – redrom

+1

Następnie możesz umieścić ng-show/ng-hide na sterowaniu siatką i sterować tą logiką, jak tylko chcesz. Lub nawet ng - jeśli nie chcesz, aby DOM renderował – Brocco

+0

naprawdę pomaga! Wielkie dzięki – Snowwolf

0

To działa na mnie, gdy definiujemy zewnątrz „gridOptions” metod sukcesów i błędów, jak pokazano poniżej:

$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'}; 
Powiązane problemy