[英]Custom Sorting in AngularJs
我有像JSON字段
{"facebook":"aravind@facebook.com",
"homeAddress":"26, New Street, Blr",
"officeAddress":"31, Old Office Street, Blr",
"city":"Blr",
name:"aravind"
},
{"facebook":"ashok@facebook.com",
"homeAddress":"26, New Street, che",
"officeAddress":"31, Old Office Street, che",
"city":"che",
name:"ashok"
}
在Angular js中,我默认按名称对字段进行排序,我有一个文本框和一个按钮
<input type="text" class="form-control" ng-model="search.location" />
<div class="search" ng-click="locationSorting()"></div>
当我单击按钮后,在文本框中输入位置(例如:blr)。 该列表按位置排序。
目前,我已经按位置整理了过滤器。 但是我不想过滤。 我想对列表进行排序
var locationFilterHome = {homeAddress: location};
filterData = $filter('filter')(data, locationFilterOffice)
我正在使用上面的代码进行过滤。 如何根据位置进行排序
据我了解,您想问一下如何按控制器中的位置对数据进行排序。 一种方法是使用“ orderBy”过滤器。 您可以像使用“过滤器”过滤器一样使用它: filterData=$filter('orderBy')(data,'location');
请查看此插件以了解我要说的示例: http : //plnkr.co/edit/BU4DaxlBSNcmRkXG6krc?p=preview
angular.module('app',[])
.controller('mainCtrl',function($filter){
var data=[{"facebook":"aravind@facebook.com",
"homeAddress":"26, New Street, Blr",
"officeAddress":"31, Old Office Street, Blr",
"city":"Zlr",
name:"aravind"
},
{"facebook":"ashok@facebook.com",
"homeAddress":"26, New Street, che",
"officeAddress":"31, Old Office Street, che",
"city":"che",
name:"ashok"
}];
var modifiedData=$filter('orderBy')(data,'city');
console.log(modifiedData);
})
您可以像这样创建过滤器!
bizBrainCommon.filter('test',function(){返回函数(items,field,sortingValue){var filter = [];
if(!field || !sortingValue)
return items;
angular.forEach(items, function (item) {
filtered.push(item);
});
filtered.sort(function (a, b) {
var upA = a[field].toUpperCase();
if (upA > sortingValue.toUpperCase() || upA < sortingValue.toUpperCase()) return 1;
if (upA == sortingValue.toUpperCase())
return -1;
});
return filtered;
};
});`
HTML将类似于:
ng-repeat="(id, user) in users |test:'fName': search"
希望这个能对您有所帮助!!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.