智能表,过滤器清洁表

时间:2015-08-09 18:40:32

标签: jquery angularjs smart-table

使用下面的代码(控制器和html页面),我看到表格没问题。但过滤器不起作用。当我在过滤器中输入内容时:

  1. 所有数据都会消失(即使过滤器与某些记录匹配)
  2. 当我清洁过滤器不回来时
  3. 有什么想法吗?

    谢谢,

    angular.module('myApp').controller('customerListController', ['$scope', '$http', '$location', function ($scope, $http, $location) {
    
        getCustomers = function () {
            var url = '......';
    
            $http({ method: 'GET', url: url })
            .success(function (data, status, headers, config) {
                $scope.customers = data.Customers;
            })
            .error(function (data, status, headers, config) {
            });
    
        };
    
        $scope.customers = getCustomers();
    
    }]);
    
    <table st-table="customers" st-safe-src="rowCollection" class="table table-striped">
        <thead>
            <tr>
                <th st-sort="FirstName">FirstName</th>
                <th st-sort="LastName">LastName</th>
                <th st-sort="Code">Code</th>
                <th st-sort="Email">Email</th>
            </tr>
            <tr>
                <th colspan="4"><input st-search="" class="form-control" placeholder="global search ..." type="text" /></th>
            </tr>
        </thead>
        <tbody>
            <tr ng-repeat="row in customers">
                <td>{{row.FirstName}}</td>
                <td>{{row.LastName}}</td>
                <td>{{row.Code}}</td>
                <td>{{row.Email}}</td>
            </tr>
        </tbody>
    </table>
    

    更新1: 我添加了下面的代码但现在改变了。

    $scope.customers = getCustomers();
    $scope.rowCollection = $scope.customers;
    

2 个答案:

答案 0 :(得分:0)

我不知道你是否还在寻找答案。 通过执行此操作$scope.rowCollection = $scope.customers;,您可以引用$scope.customers

如果我是对的,你必须通过这样的方式复制你的客户数据:

var yourCustomersData = getCustomers();
$scope.customers = angular.copy(yourCustomersData); // st-table
$scope.rowCollection = angular.copy(yourCustomersData); // st-safe-src

我认为它会像那样工作。

答案 1 :(得分:0)

你只是混淆了 st-table 和 st-safe-src 是什么, st-table 是您搜索或过滤数据网格时的临时数据,智能表从 st-safe-src 过滤主要数据,然后分配给 st-table 临时数据源

在这里您不想将数据单独分配给 st-table,因为它是一个可选的,最初是智能表查找它并过滤数据然后分配给它。

在您的代码中,我只是更改了行:

在你的 Js 中,我看到了一些奇怪的东西。 您的代码:

$scope.customers = getCustomers();

在这里,您将不可返回的功能分配给您的数据源。因此,您的数据源可能未定义。所以我只是改变了这一行。

getCustomers();

在你的 HTML 中:

<table st-table="tempCollection" st-safe-src="customers" class="table table-striped">

在您的 Js 代码中:

    angular.module('myApp').controller('customerListController', ['$scope', '$http', '$location', function ($scope, $http, $location) {

    getCustomers = function () {
        var url = '......';

        $http({ method: 'GET', url: url })
        .success(function (data, status, headers, config) {
            $scope.customers = data.Customers; // st-safe-src
            //no need to assign st-table
        })
        .error(function (data, status, headers, config) {
        });

    };

    getCustomers();

}]);