Javascript 更改ng重复上的单个迭代
我有一个ng重复,它在我的模型中遍历国家的名称。对于某些国家的名称,我希望它们被缩写以缩短字符串的长度,例如,我希望“北爱尔兰”被输出为“N.Ireland” JSON模型 我可以在我的模型中更改名称,但我宁愿保持原样,因为我希望原始数据是完整的。只有在这个特定的例子中,我才想把它缩写 我应该使用Javascript 更改ng重复上的单个迭代,javascript,arrays,angularjs,filter,ng-repeat,Javascript,Arrays,Angularjs,Filter,Ng Repeat,我有一个ng重复,它在我的模型中遍历国家的名称。对于某些国家的名称,我希望它们被缩写以缩短字符串的长度,例如,我希望“北爱尔兰”被输出为“N.Ireland” JSON模型 我可以在我的模型中更改名称,但我宁愿保持原样,因为我希望原始数据是完整的。只有在这个特定的例子中,我才想把它缩写 我应该使用ng repeat过滤器吗?如果是,怎么做? 若否,有何其他建议? HTML {{nation.name |大写}} 您可以创建自己的过滤器缩写,应用于名称。在此筛选器中,您可以打开国家名称并返回缩写
ng repeat
过滤器吗?如果是,怎么做?若否,有何其他建议? HTML
{{nation.name |大写}}
您可以创建自己的过滤器缩写
,应用于名称。在此筛选器中,您可以打开国家名称并返回缩写格式
app.filter('abbreviate', function() {
return function(country) {
switch(country){
case "Northern Ireland":
country = "N. Ireland"
break;
}
return country;
}
});
对于简单的截断,可以使用
limito
过滤器,保持模型不变是有意义的
下面是一个简单的示例(8个字符):
{{nation.name | limito:8 |大写}
像其他人说的那样,编写自己的过滤器
app.filter('abbreviate', function() {
return function(country) {
return country.replace(/^(\S)\S*(\s+\S+)/m, "$1.$2");
}
});
例如:
警报(“北爱尔兰”。替换(/^(\S)\S*(\S+\S+)/m,$1.$2”);
警报(“南非”。替换(/^(\S)\S*(\S+\S+)/m,“$1.$2”);
警报(“美国”。替换(/^(\S)\S*(\S+\S+)/m,$1.$2”)代码>您可以创建自定义过滤器来实现此目的,如下所示:
在HTML中,执行以下操作:
<h3>{{nation.name | myFormat}}</h3>
请注意,根据您的要求,自定义过滤器可以修改,如果您需要处理的字超过2个,我们可以使用for循环。使用角度过滤器
然后将所有国家/地区名称作为关键字,并使用翻译过滤器
{{nation.name | translate }}
例如,您可以为英语添加:
en.json:
[
{
"Italy": "Italy",
"Northern Ireland": "N.Ireland",
"Poland": "Poland",
.....
}
]
你可以试试这个。这很简单
<md-grid-tile ng-repeat="nation in nationData">
<img src="img/{{nation.name}}.png">
<md-grid-tile-footer>
<H3 ng-if="nation.name.split(' ').length > 1">{{ nation.name | limitTo:1 | uppercase }}. {{ nation.name.split(' ')[1] }}</H3>
<H3 ng-if="nation.name.split(' ').length == 1">{{ nation.name }}</H3>
</md-grid-tile-footer>
</md-grid-tile>
{{nation.name | limito:1 |大写}}。{{nation.name.split(“”)[1]}
{{nation.name}
为什么不在服务层中进行修改?您可以对数组使用map
来应用缩写。您可以编写自己的过滤器并使用它。筛选器可以检查字符串长度,并在需要时应用您的缩写。谢谢,但我不想截断文本,我需要一个特定的筛选器,将第一个单词转换为一个字母,后跟一个“.”(例如“N.Ireland”)@Paulos3000抱歉,我不明白这一点。谢谢-这看起来非常有用。在这种情况下,虽然我想学习如何“手动”操作,可以这么说。是的,在这种情况下,您可以将这些配置作为内部化选项在代码之外,然后对于不同的语言,您可以使用不同的模板,这需要比过滤器多一点的时间,但后来它更干净,更易于维护:)谢谢-我想这就是我想要的。我会接受答案,一旦我有它的工作…完美,只是工作。谢谢“刚果民主共和国”或“前南斯拉夫马其顿共和国”会发生什么情况?您可以根据您想要的输出进行修改。这是一个样品溶液。
app.filter('myFormat', function() {
return function(x) {
x = x.split(" ");
if(x.length>1){
x = x[0].split("")[0] + ". " + x[1];
return x;
}
else
return x[0];
};
});
{{nation.name | translate }}
[
{
"Italy": "Italy",
"Northern Ireland": "N.Ireland",
"Poland": "Poland",
.....
}
]
<md-grid-tile ng-repeat="nation in nationData">
<img src="img/{{nation.name}}.png">
<md-grid-tile-footer>
<H3 ng-if="nation.name.split(' ').length > 1">{{ nation.name | limitTo:1 | uppercase }}. {{ nation.name.split(' ')[1] }}</H3>
<H3 ng-if="nation.name.split(' ').length == 1">{{ nation.name }}</H3>
</md-grid-tile-footer>
</md-grid-tile>