在AngularJS中对$resource调用的结果进行排序
Sorting an array that is the result of a $resource call in AngularJS
我试图获得API调用的结果并将其保存到$scope.segments
,以便以后我可以使用$scope.segments.sort()
对数组进行排序
然而,由于$scope.segments = SegmentsService.getSegments(jobId);
是异步调用,$scope.segments
是undefined
,排序永远不会工作。
一整天都在挣扎。我该如何解决这个问题?
这是我的控制器:
angular.module('appApp')
.controller('MainCtrl', function ($scope, $routeParams, $filter, JobsFactory, SegmentsFactory, SegmentsService) {
var jobId = $routeParams.id;
// gets the segments from the API
$scope.segments = SegmentsService.getSegments(jobId);
// returns 'undefined', because $resource has not populated the 'segments' array yet
console.log($scope.segments);
// returns "TypeError: Cannot read property 'sort' of undefined", because $scope.segment doesn't exist (yet)
$scope.segments.sort(function(a, b) {
return a.sequence - b.sequence;
});
});
这是我的服务:
angular.module('appApp')
.service('SegmentsService', function (SegmentsFactory) {
var segments = [];
this.getSegments = function(jobId) {
SegmentsFactory.query({ job_id: jobId }).$promise.then(function(data) {
segments = data;
return segments;
}, function(err) {
//fail
});
};
});
最后,这是我的工厂:
angular.module('appApp')
.factory('SegmentsFactory', function ($resource) {
return $resource('http://localhost:3000/api/v1/segments/:id');
});
你需要了解承诺是如何工作的:)
我是AngularJS中的Promises的超级粉丝,就像漫画一样解释:)
这是你用例的工作代码。
// service: return the promise
.service('SegmentService', function (...) {
this.getSegments = function(jobId) {
return SegmentsFactory.query({ job_id: jobId }).$promise;
};
});
// controller
.controller('MainCtrl', function (...) {
SegmentsService.getSegments(jobId).then(function(segments) {
segments.sort(function(a, b) { return ...; });
$scope.segments = segments;
});
});
相关文章:
- Javascript表排序工作得很好,但对所有索引进行迭代会得到不同的结果
- 如何对javascript表进行排序(升序或降序),该表是某些SQL操作表的结果
- 如何在AngularJS中根据子结果集排序结果
- 重新排序angularjs ngRepeat与后续数据结果
- 对indexedDB查询的结果进行排序
- 如何对select2自动完成结果进行排序,只显示以第一个字母开头的项目
- 使用 Greasemonkey 修改 Craigslist 的默认搜索结果排序
- 根据所选排序动态更改结果
- 按活动排序,但不在结果中显示活动
- 按距离对搜索结果进行排序
- 使用 AJAX 回调更新挖空可观察数组会生成随机排序的结果
- JS AJAX 提前键入结果排序/竞争条件
- Javascript JSON 结果排序
- 将对象属性设置为排序结果而不进行排序
- 检索两个列表,对值进行排序和比较,然后显示所有结果
- 随后的多维数组排序会产生意外的结果
- javascript排序和排序等于结果.怎样
- 按HTML表列对查询结果排序
- 按数组大小对结果排序
- 通过JavaScript奇数结果排序JSON对象