重新排序angularjs ngRepeat与后续数据结果
re-sort angularjs ngRepeat with subsequent data results
我有一个案例,需要重复来自各种ajax源的结果。我不能等待所有源加载后再渲染,我必须在结果出现时渲染。但我希望结果按特定顺序(按字母顺序排列)。ngRepeat如果所有结果同时出现,则会对它们进行相应的排序,但如果它们是异步加载的,则不会。
加载所有结果后,如何对重复进行重新排序?
我在这里创建了一个plunkr来模拟异步ajax和我得到的无序结果。
这里有一个过于简化、有些做作的示例,说明我正在做的事情(仅用于说明目的,因为SO需要代码)。
// ngRepeat over $scope.prices in correct order
// all ajax loaded then $scope.prices assigned
var priority = ['1 Day', '3 Day', 'Ground'];
var prices = {};
for(var i = 0; i < priority.length; ++i) {
$http.get('some/endpoint/' + priority[i])
.then(function(response) {
prices[priority[i]] = response.data;
});
}
$scope.prices = {
'1 Day': prices['1 Day'],
'3 Day': prices['3 Day'],
'Ground': prices['Ground']
};
// ngRepeat over $scope.prices in order of successful load
// $scope.prices keys assigned as results are available
var priority = ['1 Day', '3 Day', 'Ground'];
for(var i = 0; i < priority.length; ++i) {
$http.get('some/endpoint/' + priority[i])
.then(function(response) {
$scope.prices[priority[i]] = response.data;
});
}
在main.html中,您可以使用angular 提供的orderBy函数
<ul>
<li ng-repeat="(priority, rates) in prices">
<h2>{{priority}}</h2>
<ul>
<li ng-repeat="prices in rates | orderBy:'price'">{{prices.price}}</li>
</ul>
</li>
</ul>
这将获取数组,并对输出进行排序
您能使用订单并为每个价格对象(1天、2天、地面)等应用一个值吗?
至于渲染,当更新列表时,是否可以在单击时重复刷新ng,并可能应用淡入/淡出?
相关文章:
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 无法使用streams/highland.js从mongodb的结果中获取数据
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- 停止 jQuery 自动完成以过滤/搜索结果并填充整个源数组数据
- 有没有一个简单的解决方案可以根据3个数据找到结果
- 将base64图像数据作为src分配给图像时,Firefox和Chrome上的结果不一致
- 重新排序angularjs ngRepeat与后续数据结果
- 从sqlite数据库查询数据结果文件名
- 如何显示查询回调数据结果仅从开始
- 从 JSON 文件加载后立即使用数据结果
- 如何避免数据结果中的 html 代码
- 将 JavaScript 数据结果放入表单输入值
- 将段落文本设置为 JSON 数据结果
- 通过循环更改 JSON 格式的数据.结果是三倍
- 数据显示更新数据结果,但更新数据结果是不工作的PHP
- 如何让jquery循环json数据结果,以创建一个两列表
- 跨域请求显示数据结果
- 在向上传递promise时更改数据结果
- 如何合并两个facebook图api数据结果(JSON)
- 如何从ajax数据结果填充javascript数组