以下是从A到Z的排序标准: 1)特殊字符2)数字3)字母表
For example:-
$scope.cards = ["815 BRAZOS ST AUSTIN TX 78701","7745 CHEVY CHASE DR AUSTIN TX 78752","701 BRAZOS ST AUSTIN TX 78701","555 ROUND ROCK WEST DR ROUND ROCK TX 78681","400 W 15TH ST AUSTIN TX 78701"]Expected result after sorting:-
400 W 15TH ST AUSTIN TX 78701
555 ROUND ROCK WEST DR ROUND ROCK TX 78681
701 BRAZOS ST AUSTIN TX 78701
815 BRAZOS ST AUSTIN TX 78701
7745 CHEVY CHASE DR AUSTIN TX 78752我想用角度orderBy滤波器来实现这一点。与JS自定义排序函数一样,我们有两个参数,通过操作可以返回>0、<0和0来实现自定义排序。
我的尝试
<div ng-controller="MyCtrl">
<ul ng-repeat="card in cards | orderBy:myValueFunction">
<li>{{card}}</li>
</ul>
</div>JS
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.cards = ["815 BRAZOS ST AUSTIN TX 78701","7745 CHEVY CHASE DR AUSTIN TX 78752","701 BRAZOS ST AUSTIN TX 78701","555 ROUND ROCK WEST DR ROUND ROCK TX 78681","400 W 15TH ST AUSTIN TX 78701"]
$scope.myValueFunction = function(card,card1) {
console.log(card);
console.log(card1);
return card;
}
}JSfiddle链路
谢谢
发布于 2014-08-27 11:23:16
根据文档,您的函数应该返回一个值,用于使用标准比较运算符(<,>,=)进行排序。
因此,在您的情况下,您的函数应该返回一个值,这将决定排序。对于您的情况,您需要投入一些先进的逻辑来产生这样的价值。
对于简单示例(按第一个数字排序),您可以得到:
$scope.myValueFunction = function(card) {
return card.split(' ')[0]|0;
}至少您可以在您的小样本中得到所需的内容,请参见:http://jsfiddle.net/zjvsu/529/
更新
如果您想比较两个值,就像标准的javascript排序自定义函数一样,那么您必须使用自己的过滤器来返回排序数组。
https://stackoverflow.com/questions/25525668
复制相似问题