我想使用 Angularjs 按字母顺序拆分国家/地区列表。有点像 A : America , Australia B: Brazil, Bhutan ... 该列表来自一个名为 countries 的表。我尝试在国家名称的第一个字母上应用 angularjs 过滤器,但失败了。我必须为它创建一个自定义过滤器吗?
问问题
2197 次
3 回答
2
好的,我要回答我自己的问题,终于让它工作了。我从 postgres 数据库中提取了一个国家列表,格式如下:
{"alpha2":"ao","alpha3":"ago","numeric":"024","country":"Angola"}
我想按字母顺序拆分国家列表,如下所示:
[示例] http://infoplease.com/countries.html#ALPHA-A
我终于通过编写自定义过滤器让它工作了:
angular.module('countryFilter', []).filter('cfilter', function() {
return function(input,x) {
var groups = [];
for(var i = 0; i < input.length; i++) {
if (input[i].country.substring(0,1) == x)
groups.push(input[i]);
} return groups; }
});
并将其用作:
ng-repeat="data in countries | cfilter:'A'
{{data.country}}
请让我知道是否有更好的方法来做到这一点......
于 2013-10-16T05:59:17.693 回答
1
这是不使用过滤器的另一种可能的解决方案 http://www.bennadel.com/blog/2456-Grouping-Nested-ngRepeat-Lists-In-AngularJS.htm
他创建了一个带有标签和数据的新数组。优点是在模板中您不必命名所有可能的字母。
对于我自己,我从对象中取出客户的第一个字母并将其存储在标签中。这样,我只能得到我使用的字母。
在客户中,我存储了一个包含对象的数组。
for(var i = 0; i < customers.length; i++){
var customer = customers[i];
if(customer[ 'title' ].substring(0,1) !== groupValue){
var group = {
label : customer[ 'title' ].substring(0,1),
customers : []
};
groupValue = customer.title.substring(0,1);
groups.push( group );
};
group.customers.push( customer );
};
于 2014-02-25T13:04:59.620 回答
0
Sort Item List 是一个 jQuery 插件,它创建类似于在 Apple 设备上的音乐和联系人应用程序中看到的 iOS 风格的粘性标题检查链接:
http://www.codingprogrammer.com/tutorialdemo/jquery-tutorial/sort-items-alphabetically-jquery-2/
于 2014-05-03T11:40:46.507 回答