[英]Angular.js expression: output transformed object property
我有这样的数据:
var user = {
name: 'John Doe',
property: 'value',
ranks: [
{name: 'One', property: 'value'},
{name: 'Two', property: 'value'}
]
}
我想在页面的某处输出所有用户的等级名称,用逗号分隔,如下所示:
<td>John Doe</td>
<td>One, Two</td>
这个怎么做?
纯JavaScript无法正常工作:
<td>{{user.name}}</td>
<td>{{user.ranks.map(function(r) { return r.name }).join(', ')}}</td>
我认为这里应该是Angular过滤器之类的东西,但找不到任何东西。
您不能在模板中编写类似的JS。 角度方法是使用过滤器:
app.filter("usersFilter" , function () {
return function(user) {
return user.ranks.map(function(r) { return r.name }).join(', ');
}
}
并在您的HTML中:
<td>{{ user | usersFilter}}</td>
最终我做到了:
编写不同的map
并使用参数join
过滤器:
app.filter("map", function() { return function(collection, attribute) { return collection.map(function(object) { var attr = object[attribute]; return (typeof attr === "function") ? attr() : attr; }); } }); app.filter("join", function() { return function(collection, separator) { return collection.join(separator); } });
然后在模板中
<td>{{user.ranks | map:'name' | join:', ' }}</td>
现在它以我想要的方式工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.