esvit / ng-table

Simple table with sorting and filtering on AngularJS
http://esvit.github.io/ng-table
BSD 3-Clause "New" or "Revised" License
2.77k stars 851 forks source link

ngTable filtering not working, data from firebase #927

Open mpondomise opened 7 years ago

mpondomise commented 7 years ago

The sorting and pagination is working but not the filtering. When I type in a letter in the filter box, the result is zero! However when I clear the filter box, the data is back. Could somebody help me to find a solution? Here is my controller:

app.controller('mycontroller', ["$scope", "$filter", "ngTableParams", "DatabaseRef", "$firebaseArray",
    function ($scope, $filter, ngTableParams, DatabaseRef, $firebaseArray) {
        //get all data from firebase database
        var mydb = DatabaseRef.ref("projects").orderByKey();
        $scope.mylist = $firebaseArray(mydb);
        var data = $scope.mylist;
        data.$loaded().then(function(data) {
            console.log(data.length); // data is loaded here, and the length is 9
            $scope.tableParams = new ngTableParams({
                page: 1, // show first page
                count: 3, // count per page
                filter: {
                    name: '' // initial filter
                },
                sorting: { city: "asc" }
            }, {
            filterSwitch: true,
            total: 0, //data.length, // length of data
            getData: function ($defer, params) {
                // use build-in angular filter
                var filteredData = params.filter() ?
                    $filter('filter')(data, params.filter()) :
                    $scope.mylist;
                var orderedData = params.sorting() ?
                    $filter('orderBy')(filteredData, params.orderBy()) : filteredData;
                params.total($scope.mylist.length);
                // set total for recalc pagination
                $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
                }
            });
        });
    }]);

and here is my html ng-repeat:

<div ng-controller="mycontroller">
    <strong>Filter:</strong> {{tableParams.filter()|json}}
        <table ng-table="tableParams" show-filter="true" class="table table-striped">
            <tr ng-repeat="obj in mylist">
                <td data-title="'Department'" filter="{ 'name': 'text' }">{{ obj.department }}</td>
                <td data-title="'Lastname'" >{{ obj.lastname }}</td>
                <td data-title="'City'">{{ obj.city }}</td>
            </tr>
        </table>
</div>