发表于: 2017-07-27 23:22:18

1 864


.昨天完成的事情

测接口

前台选择标签常量渲染

.收获

angularJS中orderby过滤器进行排序,第一个参数可以为函数/字符串/数组

第一种:function,如果是function,那么function函数会遍历待排序的数组,并将返回的结果作为angular库函数中comparator的参数,进行比较排序。

 

第二种:如果是字符串,假如待排序的数组为对象,那么将会按照待排序数组中的每个对象的对应属性值,进行排序。如果字符串前边加有“+”“-”符号,那么+表示升序排序,-表示降序排序。如果字符串为空,那么将按照元素自身进行排序。

 

第三种:如果是array,那么是第二种情况的一种多属性排序方式 。比如参数为[a,b],那么将先按照a属性值进行排序,如果a属性值相同,那么将按照b属性值进行排序。

 

如何利用orderBy,实现简单元素数组的排序,需要利用orderBy的第一参数为function的这种类型:定义function 为:

 

$scope.sortSimpleType(op){

     return op;

}

 

在页面中的代码为:字符串数组排序

<div>

    {{['test','bob','market','type','barrow'] | orderBy: sortSimpleType}}

</div>

 

排序结果为:

 

 ["barrow","bob","market","test","type"]

 

数字数组排序:

 

<div>

    {{[1,3434,2,1,12121,6,56,3] | orderBy: sortSimpleType}}

</div>

 

排序结果为:

 

[1,1,2,3,6,56,3434,12121]

当然了,参数类型为functionorderBy过滤器,也可以用来对元素为对象的数组进行排序。只要在函数中返回对象的属性值即可。

例如,

 

<div>

    {{[{'name':'nick','age':'34'},{'name':'bob','age':'23'}]] | orderBy: sortObjectType}}

</div>

$scope.sortObjectType = function(obj){

   return obj['name']

}

排序结果为:

[{"name":"bob","age":"23"},{"name":"nick","age":"34"}]

 

对于这种需要按照对象属性进行排序,可以采用orderBy参数类型为string的方式,这样可以充分利用angular的排序特性,对于上述的例子可以改为:

<div>

    {{[{'name':'nick','age':'34'},{'name':'bob','age':'23'}]] | orderBy: 'name'}}

</div>

 

//排序结果为:

[{"name":"bob","age":"23"},{"name":"nick","age":"34"}].

 

 

针对多属性的排序,采用第三种策略,参数为array类型,如:

 

<div>

    {{[{'name':'nick','age':34},{'name':'nick','age':23},{'name':'bob','age':23}]] | orderBy:[ 'name','age']}}

</div>

 

//排序结果为:

 

[{"name":"bob","age":23},{"name":"nick","age":23},{"name":"nick","age":34}]

 

.遇到的问题

暂无

.明天计划的事情

准备小课堂

前台公司列表界面



返回列表 返回列表
评论

    分享到