首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用角的orderBy指令进行自定义排序

使用角的orderBy指令进行自定义排序
EN

Stack Overflow用户
提问于 2014-08-27 11:12:05
回答 1查看 1.1K关注 0票数 0

以下是从A到Z的排序标准: 1)特殊字符2)数字3)字母表

For example:-

代码语言:javascript
复制
$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:-

代码语言:javascript
复制
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来实现自定义排序。

我的尝试

代码语言:javascript
复制
<div ng-controller="MyCtrl">
  <ul ng-repeat="card in cards | orderBy:myValueFunction">
      <li>{{card}}</li>
    </ul>
</div>

JS

代码语言:javascript
复制
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链路

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-27 11:23:16

根据文档,您的函数应该返回一个值,用于使用标准比较运算符(<,>,=)进行排序。

因此,在您的情况下,您的函数应该返回一个值,这将决定排序。对于您的情况,您需要投入一些先进的逻辑来产生这样的价值。

对于简单示例(按第一个数字排序),您可以得到:

代码语言:javascript
复制
$scope.myValueFunction = function(card) {
        return card.split(' ')[0]|0;
}

至少您可以在您的小样本中得到所需的内容,请参见:http://jsfiddle.net/zjvsu/529/

更新

如果您想比较两个值,就像标准的javascript排序自定义函数一样,那么您必须使用自己的过滤器来返回排序数组。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25525668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档