2017-01-14 5 views
0

マイページにスマートテーブルを実装しました。ng-includest-searchは機能しません。ここに私のコードは次のとおりです。スマートテーブルのst検索は機能しません

<div class="horizontal-scroll" ng-controller="SmartTableController"> 
    <div class="form-group select-page-size-wrap "> 
    <label>Rows on page 
     <select class="form-control selectpicker show-tick" title="Rows on page" selectpicker 
       ng-model="smartTablePageSize" ng-options="i for i in [5,10,15,20,25]"> 
     </select> 
    </label> 
    </div> 
    <table class="table" st-table="displayedData" st-safe-src="smartTableData" > 
    <thead> 
    <tr class="sortable "> 
     <th class="table-id" st-sort="id" st-sort-default="true">#</th> 
     <th st-sort="firstname">Prénom</th> 
     <th st-sort="lastname">Nom</th> 
     <th st-sort="role">Rôle</th> 
     <th st-sort="email">Email</th> 
     <th st-sort="chargeRate">Taux de charge</th> 
    </tr> 
    <tr> 
     <th></th> 
     <th><input st-search="firstname" placeholder="Chercher Prénom" class="input-sm form-control search-input" 
       type="search"/></th> 
     <th><input st-search="lastname" placeholder="Chercher Nom" class="input-sm form-control search-input" 
       type="search"/></th> 
     <th><input st-search="role" placeholder="Chercher Rôle" class="input-sm form-control search-input" 
       type="search"/></th> 
     <th><input st-search="email" placeholder="Chercher Email" class="input-sm form-control search-input" type="search"/> 
     </th> 
     <th><input st-search="chargeRate" placeholder="Chercher Taux de charge" class="input-sm form-control search-input" type="search"/> 
     </th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr ng-repeat="item in displayedData"> 
     <td class="table-id">{{item.id}}</td> 
     <td>{{item.firstname}}</td> 
     <td>{{item.lastname}}</td> 
     <td>{{item.role[0].name}}</td> 
     <td><a class="email-link" ng-href="mailto:{{item.email}}">{{item.email}}</a></td> 
     <td>{{item.chargeRate}}</td> 
    </tr> 
    </tbody> 
    <tfoot> 
    <tr> 
     <td colspan="6" class="text-center"> 
     <div st-pagination="" st-items-by-page="smartTablePageSize" st-displayed-pages="5"></div> 
     </td> 
    </tr> 
    </tfoot> 
    </table> 
</div> 

、その後、私は残りのアプリケーションからデータを取得し、ここで私のコントローラですよ:

angular.module('BlurAdmin.pages.users') 
.controller('SmartTableController',SmartTableController); 

function SmartTableController ($log, $scope, smartTableFactory) { 

$scope.smartTableData = []; 
$scope.selectedUsers = {}; 
$scope.smartTablePageSize = 10; 


/** 
* Get Smart Table data 
*/ 
$scope.getSmartTableData = function() { 
    smartTableFactory.getSmartTableData() 
      .success(function (data) { 
       $scope.smartTableData = data; 
       $scope.displayedData = angular.copy($scope.smartTableData); 
       console.log(" Data : " , data); 
//Edit 
    $scope.displayedData = $scope.smartTableData; 
      }) 
      .error(function (data, status) { 

       $scope.addMessage = "Erreur data : " + data + ' ' + status; 
       $log.log(data.error + '' + status); 
      }); 
    }; 

$scope.getSmartTableData(); 

} 

私のサービスが正常に動作し、私は取得していますデータプラスそれはテーブルに表示されます、私はただ検索することはできません。

ご協力いただければ幸いです。ありがとう

+0

近いST-安全src' ' – charlietfl

+0

の使用方法についてのドキュメントを読んで私がやったと私は' ST-table'を追加しましたし、リピーターのデータを変更したが、問題は –

+0

を持続 'ST-table'です'smartTableData'とは異なる配列を配列しますか? – charlietfl

答えて

0

私は試しました。結論として、あなたのコードはスマートなテーブルではなく$ httpエラーが発生する可能性があります。 JSFiddle
これらのJSONデータを使用すると、 'role'列以外のすべての列をフィルタリングできました。

$scope.smartTableData = 
     [ 
     { firstname: 1, lastname: 'aaaa', role: [{ name: 'employee1' }], chargeRate: 10, email: '[email protected]' }, 
     { firstname: 2, lastname: 'bbbb', role: [{ name: 'employee2' }], chargeRate: 20, email: '[email protected]' }, 
     { firstname: 3, lastname: 'cccc', role: [{ name: 'employee3' }], chargeRate: 30, email: '[email protected]' }, 
     { firstname: 4, lastname: 'dddd', role: [{ name: 'employee4' }], chargeRate: 40, email: '[email protected]' } 
     ]; 

データがJSON形式であるかどうかを確認してください。

'role'列には、このようにコードする必要があります。
OK <input st-search="role.name"
NG <input st-search="role"

そして、私はあなたはそれが不要なので、この部分をコーディングする必要はありませんと思います。

$scope.displayedData = angular.copy($scope.smartTableData); 
    $scope.displayedData = $scope.smartTableData; 
+0

データが – charlietfl

+0

のように非同期にロードされ、データのクローニングが必要な場合、フィルタリングされていない配列を格納する必要があります。[docs](https:// lorenzofox3.github.io/smart-table-website/) –

関連する問題