2015-02-04 15 views
5

Próbuję wykonać kilka sugestii dotyczących odświeżania siatki kendo, takiej jak this.Jak wywołać funkcję refresh() na kendo-grid z kontrolera Angular?

Istotnym jest, że w html mam:

<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions"> 

Następnie w kontroler mam:

vm.webapiGrid.refresh(); 

Uwaga: używam składni ControllerAs więc używam „VM "zamiast dolnego zakresu.

Mój problem polega na tym, że "vm.webapiGrid" jest niezdefiniowane. Wydaje się to tak proste, ale nie jestem pewien, dlaczego jest nieokreślony.

Odpowiedz

9

Znaleziono odpowiedź. Jedna inna metoda orzeźwiające źródło danych Czytałem o to, aby zrobić coś takiego:

vm.mainGridOptions.datasource.transport.read(); 

To nie działa na mnie jak „czytać” był nieokreślony. Patrząc na mojej definicji źródła danych, widziałem powodu, czytać potrzebuje parametru (w tym przypadku „e”):

vm.mainGridOptions = { 
     dataSource: { 
      transport: { 
       read: function (e) { 
        task.getAllTasks(vm.appContext.current.contextSetting). 
         then(function (data) { 
          e.success(data); 
         }); 
       }, 
      } 
     }, 

Aby rozwiązać, uratowałem „e” w moim zasięgu, a następnie ponownego wykorzystania go, gdy chciałem odświeżania:

vm.mainGridOptions = { 
     dataSource: { 
      transport: { 
       read: function (e) { 
        task.getAllTasks(vm.appContext.current.contextSetting). 
         then(function (data) { 
          e.success(data); 
          vm.optionCallback = e; 
         }); 
       }, 
      } 
     }, 

a następnie:

if (vm.optionCallback !== undefined) { 
    vm.mainGridOptions.dataSource.transport.read(vm.optionCallback); 
} 

problem rozwiązany (mam nadzieję).

-3

Dodaj identyfikator do siatki i próbuj odświeżać, używając go.

<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions" id="grid1"> 

W użyciu kontrolera to:..

$ ("# grid1") danych ('kendoGrid') refresh();

+0

To zaczyna mnie do tego docierać (chociaż prawdopodobnie odetnę mi palce za użycie selektora jquery). Problem polega na tym, że funkcja odświeżania oczekuje zdarzenia. Jeśli oceniam, widzę: function (e) { var that = this, length, ..... –

+0

możesz utworzyć jsfiddle z kodem ..dat byłoby łatwo złapać problem .. – Andrea

+0

http://stackoverflow.com/questions/18399805/reloading-refreshing-kendo-grid To również pomoże –

3

to dlatego, że używasz opcji sprzeciwiają się wyzwolić odczytu, należy użyć siatki odniesienia Zamiast:

<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions"> 

na przykład:

$scope.vm.webapiGrid.dataSource.transport.read(); 

nadzieję, że pomoże.

Powiązane problemy