Angularjs 来自web api的数据不起作用的ngTable

Angularjs 来自web api的数据不起作用的ngTable,angularjs,ngtable,Angularjs,Ngtable,我正在使用ngTable for AngularJS并从web api获取数据。当我尝试使用表中的过滤器时,问题就开始了 如果我这样做,表中会充满数据,但过滤器不起作用: $scope.clientesTable = new NgTableParams({ page: 1, count: 10 }, { getData: function (params) {

我正在使用ngTable for AngularJS并从web api获取数据。当我尝试使用表中的过滤器时,问题就开始了

如果我这样做,表中会充满数据,但过滤器不起作用:

$scope.clientesTable = new NgTableParams({
            page: 1,
            count: 10
        }, {
                getData: function (params) {
                    var clientes = clientesService.getAll(baseUrl);
                    clientes.then(function (data) {
                        $scope.clientesTableData = data.data;
                    }, function (error) {
                        console.log("Error: " + error);
                    });
                }

            });
在文档中,代码如下所示:

$scope.clientesTable = new NgTableParams({
                page: 1,
                count: 10
            }, {
                    getData: function (params) {
                        var clientes = clientesService.getAll(baseUrl);
                        clientes.then(function (data) {
                              params.total(data.inlineCount);
                              return data.results;
                        }, function (error) {
                            console.log("Error: " + error);
                        });
                    }

                });
这样做,我看不到前端的数据。如果在ClientStable中查找数据:

编辑: 来自web api的响应:

您必须在
客户机之前提供
return
关键字。然后()
在getData方法内部。

如果我看这个答案,我会发现
NgTableParams
的用法不同。您需要在使用它时承诺将数据返回到NgTableParams对象

$scope.tableParams = new ngTableParams({
            page: 1, count: 5,
        }, {
            getData: function ($defer, params) {
                $http.get(testUrl, { params: params })
                     .then(function(res) {
                        $defer.resolve(res.data.items);
                    }, function(reason) {
                        $defer.reject();
                    }
                );
            },
        });
请参阅完整示例了解详细信息,为了更好地理解,我对示例进行了简化

编辑:

我认为ng表的API已经改变了——它不再期望延迟器。 现在再看一下您的第一个代码示例(您说它是有效的),我明白了过滤器不起作用的原因:您没有将过滤器信息传递回您的服务

ng表文档说明:

有getData函数吗?在这种情况下,需要应用这些值 从NgTableParams.filters()到要在数据库中显示的数据 桌子当从中提取数据时,通常会出现这种情况 服务器

我不知道你的服务,但是你能把过滤参数添加到服务调用中吗

var clientes = clientesService.getAll(baseUrl, params._params)

顺便说一句:ng表的文档是一场噩梦——所有样本都相互继承,并使用指令和注入

能否在clients.then(函数(数据))之后添加console.log{…@Gerfried显示数据?是的,您从您的服务中收到任何数据。结构是data.data吗?是的,数据是正常的。如果我将data.data命名为$scope中的一个变量,那么我可以在前端看到它。问题是当我像在文档中一样使用return data.data时。@guidocafa可能您必须在ore clientes.then()那样做我有一个错误:TypeError:“params未定义”。我找不到为什么会有这个错误,我在代码中使用了参数,我没有这个问题。