gpt4 book ai didi

javascript - 使用 NgTable 参数通过 AJAX 加载 JSON

转载 作者:可可西里 更新时间:2023-11-01 02:54:39 24 4
gpt4 key购买 nike

我正在尝试使用 ngTables 通过 AJAX 调用对数据进行排序和过滤。目前我可以用 ng-repeat 复制数据,但我的排序函数都不适用。我引用了这个例子http://plnkr.co/edit/zuzcma?p=info并能够使用 mock.js 文件让它工作,但现在我正在使用我加载到我的网络服务器上的文件,但我似乎无法让它工作。

我确信答案相当简单,感谢您的帮助。我附上了我的标记以向您展示我的 Controller 和 html 文件的样子。谢谢大家,如果您需要更多信息,请告诉我!

以下是我所引用的 API 的一些链接。

http://bazalt-cms.com/ng-table/

http://bazalt-cms.com/ng-table/example/6

HTML:

<div ng-controller="myController">
<table ng-table="tableParams" show-filter="true" class="table table-condensed">
<tr ng-repeat="user in data">
<td data-title="foo" sortable="foo">{{user.foo}}</td>
<td data-title="bar" sortable="bar">{{user.bar}}</td>
</tr>
</table>
</div>

Controller :

var app = angular.module('app', ['ngTable']);

app.controller('myController', function($scope, $http, $filter, ngTableParams) {

$http.get('http://jsondata.com/myjson.json')
.success(function(data, status) {
$scope.data = data;
});

$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 10, // count per page
sorting: {
foo: 'asc' // initial sorting
}
}, {
total: data.length, // length of data
getData: function($defer, params) {
// use build-in angular filter
var orderedData = params.sorting() ?
$filter('orderBy')(data, params.orderBy()) :
data;

$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
});

最佳答案

你的问题是你在 ngTableParams 中使用局部变量数据,同时你在 success 函数的范围之外。

像这样改变你的代码:

var app = angular.module('app', ['ngTable']);

app.controller('myController', function($scope, $http, $filter, ngTableParams) {

$http.get('http://jsondata.com/myjson.json')
.success(function(data, status) {
$scope.data = data;

$scope.tableParams = new ngTableParams({
page: 1, // show first page
count: 10, // count per page
sorting: {
foo: 'asc' // initial sorting
}
}, {
total: $scope.data.length, // length of data
getData: function($defer, params) {
// use build-in angular filter
var orderedData = params.sorting() ?
$filter('orderBy')($scope.data, params.orderBy()) :
$scope.data;

$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
});


});

查看 ngTableParams 中从 data$scope.data 的变化。

提示:如果你只是将你的 ngTableParams 放在你的 success 函数中,也可以工作,而不需要将 data 更改为 $范围.数据。但是,如果您想 reload() 您的表,更改变量将为您提供更好的灵 active 。

关于javascript - 使用 NgTable 参数通过 AJAX 加载 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21805734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com