gpt4 book ai didi

带有 AJAX 数据源、排序和过滤的 Angularjs ng-table

转载 作者:行者123 更新时间:2023-12-02 19:10:53 24 4
gpt4 key购买 nike

我正在尝试应用 ngTable directive到我的 Rails 应用程序,但无法正确使用。我仍然是 Angular 方面的新手,并且该指令似乎记录很少(尽管有很多不错的示例)。

所以我有一个名为 $scope.users 的数组,其中包含我需要的所有用户信息(例如 like this ),它来自 $resource 查询()

我需要将它变成一个表格:

  1. 排序
  2. 分页
  3. 从一个输入中进行过滤(例如完成 over here )

有人可以提供解决方案或至少提供如何将它们组合在一起的建议吗?

更新

因此,在 irc channel 上的 wafflejock 的大力帮助下,我已经能够整合一些功能。这是the plunk .

还有什么问题:

  1. 每次我更改页面、排序或其他任何内容时,都会请求 json 数据集。这是一个巨大的请求量,所以我需要它以某种方式被缓存。
  2. 我需要能够从 Controller 操作数据集以更改值并在需要时删除用户。仍然不知道如何实现。

最佳答案

嗨,Almaron(又名 Malkav),我是 IRC 的华夫饼运动员,这是我能得到的最好的东西:

http://plnkr.co/edit/TUOYmM?p=preview

var app = angular.module('main', ['ngTable']).
controller('DemoCtrl', function($scope, ngTableParams, NameService) {

var data = NameService.data;

$scope.tableParams = new ngTableParams(
{
page: 1, // show first page
count: 10, // count per page
sorting: {name:'asc'}
},
{
total: 0, // length of data
getData: function($defer, params) {
NameService.getData($defer,params,$scope.filter);
}
});

$scope.$watch("filter.$", function () {
$scope.tableParams.reload();
});

});

app.service("NameService", function($http, $filter){

function filterData(data, filter){
return $filter('filter')(data, filter)
}

function orderData(data, params){
return params.sorting() ? $filter('orderBy')(data, params.orderBy()) : filteredData;
}

function sliceData(data, params){
return data.slice((params.page() - 1) * params.count(), params.page() * params.count())
}

function transformData(data,filter,params){
return sliceData( orderData( filterData(data,filter), params ), params);
}

var service = {
cachedData:[],
getData:function($defer, params, filter){
if(service.cachedData.length>0){
console.log("using cached data")
var filteredData = filterData(service.cachedData,filter);
var transformedData = sliceData(orderData(filteredData,params),params);
params.total(filteredData.length)
$defer.resolve(transformedData);
}
else{
console.log("fetching data")
$http.get("http://www.json-generator.com/api/json/get/bUAZFEHxCG").success(function(resp)
{
angular.copy(resp,service.cachedData)
params.total(resp.length)
var filteredData = $filter('filter')(resp, filter);
var transformedData = transformData(resp,filter,params)

$defer.resolve(transformedData);
});
}

}
};
return service;
});

基本上,我设置了一些函数来执行这些长行,以使其更容易阅读,然后设置一个cachedData对象,我在调用之前检查它是否已填充......看起来它仍然使一开始很快就进行了两次调用,我确信您可以通过使用标志来检查数据是否已加载来避免这种情况,如果是,则只需等待即可,而不是重做调用,但不确定这是一个大问题。

关于带有 AJAX 数据源、排序和过滤的 Angularjs ng-table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079612/

24 4 0
文章推荐: javascript - 在 d3js 中为该元素设置动画
文章推荐: embedded - RTOS - 等待队列中的不同数据
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com