【问题标题】:NG Table no works with just 1 recordNG 表仅适用于 1 条记录
【发布时间】:2016-02-24 20:53:12
【问题描述】:

我对 angularJS 有疑问。

当数据库只有 1 条记录时,我的 ng-table 不起作用。 加载 2 条或更多条记录时有效。

浏览器错误控制台: 错误:[orderBy:notarray]http://errors.angularjs.org/1.5.0/orderBy/notarray?p0=%7B%22clienteID%22%3A...clienteNome%22%3A%22Nicolas%22%2C%22clienteConta%22%3A%229.9999999E7%22%7D 在错误(本机) 在

我的 HTML:

<table ng-table="tableParams" class="table table-striped" show-filter="true">
                <tr ng-repeat="cliente in data">
                       <td title="'ID'" filter="{ clienteID: 'number'}" sortable="'clienteID'">
                        {{cliente.clienteID}}
                    </td>
                    <td title="'Cliente'" filter="{ clienteNome: 'text'}" sortable="'clienteNome'">
                        {{cliente.clienteNome}}
                    </td>
                    <td><a ng-click="editUser(user.id)" class="btn btn-small btn-primary">Editar</a></td>
                    <td><a ng-click="deleteClienteById(cliente.clienteID)" class="btn btn-small btn-danger">Excluir</a></td>
                </tr>
            </table>

我的控制器:

angular.module('ProjetoAngularClient').controller('clienteController',
        function($scope,$filter,NgTableParams,clienteService) {

        clienteService.getAllClientes().success(function(response){
        $scope.clientes = response.cliente;
        table();
        });

        function getAll(){
            clienteService.getAllClientes().success(function(response){
                $scope.clientes = null;
                $scope.clientes = response.cliente;
                $scope.tableParams.reload();
                });
        }

          function table(){
                $scope.tableParams = new NgTableParams({
                    page: 1,
                    count:10
                }, {
                    total: $scope.clientes.length, 
                    getData: function ($defer, params) {
                           $scope.data = params.sorting() ? $filter('orderBy')($scope.clientes, params.orderBy()) : $scope.clientes;
                           $scope.data = params.filter() ? $filter('filter')($scope.data, params.filter()) : $scope.data;
                           $scope.data = $scope.data.slice((params.page() - 1) * params.count(), params.page() * params.count());
                           $defer.resolve($scope.data);
                        }
                });  
          };

            $scope.deleteClienteById = function(clienteID) {
            clienteService.deleteClienteById(clienteID);
            getAll();
        };
});

感谢您的帮助

【问题讨论】:

    标签: javascript java jquery html angularjs


    【解决方案1】:

    在所有情况下都需要一个数组。但是$scope.clientes = response.cliente;$scope.clientes 设置为一个客户端。

    我不完全理解你的程序逻辑。起初您似乎从clienteService.getAllClientes() 加载,然后通过table() 调用getAll(); 以再次加载clienteService.getAllClientes()

    快速解决方法是测试response.cliente 是否为数组,如果不是,则将其分配为$scope.clientes = [response.cliente];

    但是,我认为您的后端应该固定为始终返回一个数组。

    【讨论】:

    • 嘿伙计,谢谢你的帮助!错误发生导致我的服务只返回 1 条记录,而 JS 不理解像 Array....忽略 getAll 方法...
    • 如果它解决了您的问题,请通过复选标记接受答案,以便发现此问题的其他人看到有一个可行的解决方案(也因为我得到了几点)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多