Angularjs 来自web api的数据不起作用的ngTable
我正在使用ngTable for AngularJS并从web api获取数据。当我尝试使用表中的过滤器时,问题就开始了 如果我这样做,表中会充满数据,但过滤器不起作用:Angularjs 来自web api的数据不起作用的ngTable,angularjs,ngtable,Angularjs,Ngtable,我正在使用ngTable for AngularJS并从web api获取数据。当我尝试使用表中的过滤器时,问题就开始了 如果我这样做,表中会充满数据,但过滤器不起作用: $scope.clientesTable = new NgTableParams({ page: 1, count: 10 }, { getData: function (params) {
$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未定义”。我找不到为什么会有这个错误,我在代码中使用了参数,我没有这个问题。