2017-09-23 6 views
0

J'ai datatable peuplé en utilisant ng-repeat dans un onglet. Si je visite un autre onglet et que je reviens, ma table est remplie mais ne montre aucune donnée disponible. Au premier chargement toutes les fonctionnalités de datatable comme le tri, la recherche, la pagination. travaux. mais sur revisiter rien ne fonctionne. Aidez-moi, s'il vous plaît.datatable dans l'onglet bootstrap sur revisit montre aucune donnée disponible

<table id="example" class="books-table table table-striped" ui-jq="dataTable" datatable="ng" ui-options="dataOpt" > 
    <thead> 
     <tr> 
     <th>Book name</th> 
     <th>Author</th> 
     <th></th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr dt-rows ng-repeat="book in data" emit-last-repeat-element> 
     <td>{{book.from}}</td> 
     <td>{{book.to}}</td> 
     <td class="action-icons"> 
      <a href="#/books/edit/{{book._id}}" class="btn btn-default"><i class="glyphicon glyphicon-pencil"></i></a> 
     </td> 
     </tr> 
    </tbody> 
</table> 

app.js fichier

angular 
.module('app', ['ui.router','ui.bootstrap','ui.utils','datatables']) 
.config(config) 
.run(run); 
//here all the state provider code.. 

contrôleur d'index est

(function() { 
    'use strict'; 
    angular 
     .module('app') 
     .controller('Books.IndexController', Controller); 

    function Controller(BookService,UserService,$scope) { 
     var vm = this; 
     vm.userid=null; 
     vm.books = []; 
     $scope.data=[]; 

     initController(); 

     function initController() { 

       UserService.GetCurrent().then(function (user) { 
       vm.userid = user._id; 

       }); 
       vm.loading = true; 
      BookService.GetAll() 
       .then(function (books) { 
        vm.loading = false; 
        vm.books = books; 
        $scope.data=vm.books; 
       }); 
     } 

     $(document).ready(function(){ 
      var table=$('#example').DataTable(); 
     }); 

    } 
})(); 
+0

Vous devez formater votre code JS pour des raisons de lisibilité. –

+0

Il est mauvais d'utiliser jquery avec angulaire –

Répondre

0

Il existe déjà un exemple dans DataTable docs qui utilisent l'onglet bootstrap here

si vous avez besoin d'ajouter

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { 
    $.fn.dataTable.tables({visible: true, api: true}).columns.adjust(); 
}); 
+0

Il n'y a pas de problème avec l'alignement. si j'ajoute les instructions données lors du premier chargement, il se remplit et ne donne pas de message. – prathibha

+0

si je rafraîchis 2 fois son fonctionnement bien. – prathibha

+0

essayez d'utiliser cet événement et réinitialisez le tableau de données à l'intérieur –