2017-10-13 35 views
0

我在我的應用程序使用此代碼選擇所有的數據表,我可以」 T選擇所有:有角的js

'use strict'; 

/** 
* @ngdoc function 
* @name INSIDERSApp.controller:ReferentCtrl 
* @description 
* # ReferentCtrl 
* Controller of the INSIDERSApp 
*/ 
angular.module('INSIDERSApp') 
    .controller('ReferentCtrl', function (INSIDERSServices,$log,$scope,DTOptionsBuilder, DTColumnBuilder, $q,$filter) { 

     $scope.referents = this; 
     $scope.referents.selected = {}; 

     $scope.referents.selectAll = false; 
     $scope.referents.toggleAll = toggleAll; 
     $scope.referents.toggleOne = toggleOne; 

     var titleHtml = '<input type="checkbox" ng-model="referents.selectAll" ng-click="referents.toggleAll(referents.selectAll, referents.selected)">'; 

     $scope.referents.dtOptions = DTOptionsBuilder 

     .fromFnPromise(function() { 
      var defer = $q.defer(); 
      INSIDERSServices.referents() 
       .success(function(data){ 
        defer.resolve(data); 
       }).error(function(data){ 
        $log.error("ERROR can't get liste of referents"); 
       }); 
      return defer.promise; 
     }) 
     .withPaginationType('full_numbers') 
     .withLightColumnFilter({ 
        '1' : { 
         type : 'text' 
        }, 
        '2' : { 
         type : 'text' 
        }, 
        '3' : { 
         type : 'text' 
        }, 
        '4' : { 
         type : 'text' 
        }, 
        '5' : { 
         type : 'text' 
        }, 
        '6' : { 
         type : 'text' 
        }, 
        '7' : { 
         type : 'text' 
        }, 
        '8' : { 
         type : 'text' 
        } 
       }) 


     .withOption('paging', true) 
     .withOption('searching', true) 
     .withOption('info', true) 
     .withLanguageSource('app/styles/plugins/datatables/json/French.json') 
     .withDOM(
         "<'row'<'col-sm-7'l><'col-sm-5'f>>" + 
         "<'row'<'col-sm-12'tr>>" + 
         "<'row'<'col-sm-7'i><'col-sm-5'p>>"  
      ) 
     ; 


     $scope.referents.dtColumns = [ 
      DTColumnBuilder.newColumn(null).withTitle(titleHtml).notSortable().renderWith(function (data, type, full, meta) { 
       $scope.referents.selected[full.id] = false; 
       return '<input type="checkbox" ng-model="referents.selected[' + data.id + ']" ng-click="referents.toggleOne(referents.selected)">'; 
      }), 
      DTColumnBuilder.newColumn('nom').withTitle('Nom'), 
      DTColumnBuilder.newColumn('prenom').withTitle('Prénom'), 
      DTColumnBuilder.newColumn('fonction').withTitle('Fonction'), 
      DTColumnBuilder.newColumn('profil').withTitle('Profil'), 
      DTColumnBuilder.newColumn('etat').withTitle('MAJ Liste').renderWith(function(data, type) { 
       if(data === true) return "Oui"; 
       else return "Non"; 
      }), 
      DTColumnBuilder.newColumn('dateMaj').withTitle('Date de MAJ Liste').renderWith(function(data, type) { 
       return $filter('date')(data, 'dd/MM/yyyy'); //date filter 
      }), 
      DTColumnBuilder.newColumn('dateRelance').withTitle('Date de relance').renderWith(function(data, type) { 
       return $filter('date')(data, 'dd/MM/yyyy'); //date filter 
      }), 
      DTColumnBuilder.newColumn('dateNotif').withTitle('Date de Notification').renderWith(function(data, type) { 
        return $filter('date')(data, 'dd/MM/yyyy'); //date filter 
       }) 
     ]; 

     function toggleAll (selectAll, selectedItems) { 
      $log.log("IN toggleAll"); 
      for (var id in selectedItems) { 
       if (selectedItems.hasOwnProperty(id)) { 
        selectedItems[id] = selectAll; 
       } 
      } 
     } 
     function toggleOne (selectedItems) { 
      $log.log("IN toggleOne"); 
      for (var id in selectedItems) { 
       if (selectedItems.hasOwnProperty(id)) { 
        if(!selectedItems[id]) { 
         $scope.referents.selectAll = false; 
         return; 
        } 
       } 
      } 
      $scope.referents.selectAll = false; 
     } 
    }); 


    <div class="main-container content-active"> 
    <div class="content"> 
       <div ng-controller="ReferentCtrl as referents"> 
    <p class="text-danger">You selected the following rows:</p> 
    <p> 
     </p><pre>{{ referents.selected |json }}</pre> 
    <p></p> 

    <table datatable="" dt-options="referents.dtOptions" dt-columns="referents.dtColumns" width="100%" class="table table-striped table-bordered"></table></div> </div> 

我按照這個教程: [在這裏輸入的形象描述] [1] http://l-lin.github.io/angular-datatables/archives/#!/rowSelect

任何幫助,但它不工作!

回答

0

我找到了解決方案: 我加在我的代碼 'createdRow' 和 'headerCallback' 和$編譯在我的控制器功能:

'use strict'; 
 

 
/** 
 
* @ngdoc function 
 
* @name INSIDERSApp.controller:ReferentCtrl 
 
* @description # ReferentCtrl Controller of the INSIDERSApp 
 
*/ 
 
angular 
 
\t \t .module('INSIDERSApp') 
 
\t \t .controller(
 
\t \t \t \t 'ReferentCtrl', 
 
\t \t \t \t function(INSIDERSServices,$compile, $log, $scope, DTOptionsBuilder, 
 
\t \t \t \t \t \t DTColumnBuilder, $q, $filter) { 
 

 
\t \t \t \t \t $scope.referents = this; 
 
\t \t \t \t \t $scope.referents.selected = {}; 
 

 
\t \t \t \t \t $scope.referents.selectAll = false; 
 
\t \t \t \t \t $scope.referents.toggleAll = toggleAll; 
 

 
\t \t \t \t \t $scope.referents.toggleOne = toggleOne; 
 
\t \t \t \t \t 
 
\t \t \t \t \t var titleHtml = '<input type="checkbox" ng-model="referents.selectAll" ng-click="referents.toggleAll(referents.selectAll, referents.selected)">'; 
 

 
\t \t \t \t \t $scope.referents.dtOptions = DTOptionsBuilder 
 

 
\t \t \t \t \t \t \t .fromFnPromise(
 
\t \t \t \t \t \t \t \t \t function() { 
 
\t \t \t \t \t \t \t \t \t \t var defer = $q.defer(); 
 
\t \t \t \t \t \t \t \t \t \t INSIDERSServices 
 
\t \t \t \t \t \t \t \t \t \t \t \t .referents() 
 
\t \t \t \t \t \t \t \t \t \t \t \t .success(function(data) { 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t defer.resolve(data); 
 
\t \t \t \t \t \t \t \t \t \t \t \t }) 
 
\t \t \t \t \t \t \t \t \t \t \t \t .error(
 
\t \t \t \t \t \t \t \t \t \t \t \t \t \t function(data) { 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t $log 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t .error("ERROR can't get liste of referents"); 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t \t }); 
 
\t \t \t \t \t \t \t \t \t \t return defer.promise; 
 
\t \t \t \t \t \t \t \t \t }) 
 
\t \t \t \t \t \t \t .withPaginationType('full_numbers') 
 
\t \t \t \t \t \t \t .withLightColumnFilter({ 
 
\t \t \t \t \t \t \t \t '1' : { 
 
\t \t \t \t \t \t \t \t \t type : 'text' 
 
\t \t \t \t \t \t \t \t }, 
 
\t \t \t \t \t \t \t \t '2' : { 
 
\t \t \t \t \t \t \t \t \t type : 'text' 
 
\t \t \t \t \t \t \t \t }, 
 
\t \t \t \t \t \t \t \t '3' : { 
 
\t \t \t \t \t \t \t \t \t type : 'text' 
 
\t \t \t \t \t \t \t \t }, 
 
\t \t \t \t \t \t \t \t '4' : { 
 
\t \t \t \t \t \t \t \t \t type : 'text' 
 
\t \t \t \t \t \t \t \t }, 
 
\t \t \t \t \t \t \t \t '5' : { 
 
\t \t \t \t \t \t \t \t \t type : 'text' 
 
\t \t \t \t \t \t \t \t }, 
 
\t \t \t \t \t \t \t \t '6' : { 
 
\t \t \t \t \t \t \t \t \t type : 'text' 
 
\t \t \t \t \t \t \t \t }, 
 
\t \t \t \t \t \t \t \t '7' : { 
 
\t \t \t \t \t \t \t \t \t type : 'text' 
 
\t \t \t \t \t \t \t \t }, 
 
\t \t \t \t \t \t \t \t '8' : { 
 
\t \t \t \t \t \t \t \t \t type : 'text' 
 
\t \t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t \t }) 
 

 
\t \t \t \t \t \t \t .withOption('paging', true) 
 
\t \t \t \t \t \t \t .withOption('searching', true) 
 
\t \t \t \t \t \t \t .withOption('info', true) 
 
\t \t \t \t \t \t \t .withOption('createdRow', function(row, data, dataIndex) { 
 
\t \t \t \t \t    $compile(angular.element(row).contents())($scope); 
 
\t \t \t \t \t   }) 
 
\t \t \t \t \t   .withOption('headerCallback', function(header) { 
 
\t \t \t \t \t    if (!$scope.referents.headerCompiled) { 
 
\t \t \t \t \t    \t $scope.referents.headerCompiled = true; 
 
\t \t \t \t \t     $compile(angular.element(header).contents())($scope); 
 
\t \t \t \t \t    } 
 
\t \t \t \t \t   }) 
 
\t \t \t \t \t \t \t .withLanguageSource(
 
\t \t \t \t \t \t \t \t \t 'app/styles/plugins/datatables/json/French.json') 
 
\t \t \t \t \t \t \t .withDOM(
 
\t \t \t \t \t \t \t \t \t "<'row'<'col-sm-7'l><'col-sm-5'f>>" 
 
\t \t \t \t \t \t \t \t \t \t \t + "<'row'<'col-sm-12'tr>>" 
 
\t \t \t \t \t \t \t \t \t \t \t + "<'row'<'col-sm-7'i><'col-sm-5'p>>"); 
 

 
\t \t \t \t \t $scope.referents.dtColumns = [ 
 
\t \t \t \t \t \t \t DTColumnBuilder 
 
\t \t \t \t \t \t \t \t \t .newColumn(null) 
 
\t \t \t \t \t \t \t \t \t .withTitle(titleHtml) 
 
\t \t \t \t \t \t \t \t \t .notSortable() 
 
\t \t \t \t \t \t \t \t \t .renderWith(
 
\t \t \t \t \t \t \t \t \t \t \t function(data, type, full, meta) { 
 
\t \t \t \t \t \t \t \t \t \t \t \t $scope.referents.selected[full.id] = false; 
 
\t \t \t \t \t \t \t \t \t \t \t \t return '<input type="checkbox" ng-model="referents.selected[' 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t \t + data.id 
 
\t \t \t \t \t \t \t \t \t \t \t \t \t \t + ']" ng-click="referents.toggleOne(referents.selected)">'; 
 
\t \t \t \t \t \t \t \t \t \t \t }), 
 
\t \t \t \t \t \t \t DTColumnBuilder.newColumn('nom').withTitle('Nom'), 
 
\t \t \t \t \t \t \t DTColumnBuilder.newColumn('prenom').withTitle(
 
\t \t \t \t \t \t \t \t \t 'Prénom'), 
 
\t \t \t \t \t \t \t DTColumnBuilder.newColumn('fonction').withTitle(
 
\t \t \t \t \t \t \t \t \t 'Fonction'), 
 
\t \t \t \t \t \t \t DTColumnBuilder.newColumn('profil').withTitle(
 
\t \t \t \t \t \t \t \t \t 'Profil'), 
 
\t \t \t \t \t \t \t DTColumnBuilder.newColumn('etat').withTitle(
 
\t \t \t \t \t \t \t \t \t 'MAJ Liste').renderWith(
 
\t \t \t \t \t \t \t \t \t function(data, type) { 
 
\t \t \t \t \t \t \t \t \t \t if (data === true) 
 
\t \t \t \t \t \t \t \t \t \t \t return "Oui"; 
 
\t \t \t \t \t \t \t \t \t \t else 
 
\t \t \t \t \t \t \t \t \t \t \t return "Non"; 
 
\t \t \t \t \t \t \t \t \t }), 
 
\t \t \t \t \t \t \t DTColumnBuilder.newColumn('dateMaj').withTitle(
 
\t \t \t \t \t \t \t \t \t 'Date de MAJ Liste').renderWith(
 
\t \t \t \t \t \t \t \t \t function(data, type) { 
 
\t \t \t \t \t \t \t \t \t \t return $filter('date')(data, 
 
\t \t \t \t \t \t \t \t \t \t \t \t 'dd/MM/yyyy'); // date filter 
 
\t \t \t \t \t \t \t \t \t }), 
 
\t \t \t \t \t \t \t DTColumnBuilder.newColumn('dateRelance').withTitle(
 
\t \t \t \t \t \t \t \t \t 'Date de relance').renderWith(
 
\t \t \t \t \t \t \t \t \t function(data, type) { 
 
\t \t \t \t \t \t \t \t \t \t return $filter('date')(data, 
 
\t \t \t \t \t \t \t \t \t \t \t \t 'dd/MM/yyyy'); // date filter 
 
\t \t \t \t \t \t \t \t \t }), 
 
\t \t \t \t \t \t \t DTColumnBuilder.newColumn('dateNotif').withTitle(
 
\t \t \t \t \t \t \t \t \t 'Date de Notification').renderWith(
 
\t \t \t \t \t \t \t \t \t function(data, type) { 
 
\t \t \t \t \t \t \t \t \t \t return $filter('date')(data, 
 
\t \t \t \t \t \t \t \t \t \t \t \t 'dd/MM/yyyy'); // date filter 
 
\t \t \t \t \t \t \t \t \t }) ]; 
 

 
\t \t \t \t \t function toggleAll(selectAll, selectedItems) { 
 
\t \t \t \t \t \t $log.log("IN toggleAll"); 
 
\t \t \t \t \t \t for (var id in selectedItems) { 
 
\t \t \t \t \t \t \t if (selectedItems.hasOwnProperty(id)) { 
 
\t \t \t \t \t \t \t \t selectedItems[id] = selectAll; 
 
\t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t } 
 
\t \t \t \t \t \t 
 
\t \t \t \t \t \t 
 
\t \t \t \t \t } 
 
\t \t \t \t \t function toggleOne(selectedItems) { 
 
\t \t \t \t \t \t $log.log("IN toggleOne"); 
 
\t \t \t \t \t \t for (var id in selectedItems) { 
 
\t \t \t \t \t \t \t if (selectedItems.hasOwnProperty(id)) { 
 
\t \t \t \t \t \t \t \t if (!selectedItems[id]) { 
 
\t \t \t \t \t \t \t \t \t $scope.referents.selectAll = false; 
 
\t \t \t \t \t \t \t \t \t return; 
 
\t \t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t \t } 
 
\t \t \t \t \t \t } 
 
\t \t \t \t \t \t $scope.referents.selectAll = true; 
 
\t \t \t \t \t } 
 

 
\t \t \t \t });
<div class="main-container content-active"> 
 
    <div class="content"> 
 
\t \t \t \t <div ng-controller="ReferentCtrl as referents"> 
 
    <p class="text-danger">You selected the following rows:</p> 
 
    <p> 
 
     </p><pre>{{ referents.selected |json }}</pre> 
 
     
 
    <p></p> 
 
\t \t \t \t 
 
    <table datatable="" dt-options="referents.dtOptions" dt-columns="referents.dtColumns" width="100%" class="table table-striped table-bordered dataTable no-footer"></table> 
 
       </div> 
 
        
 
       </div> 
 
     
 
    </div>