我对角度感到非常失望...我试图做一个非常简单的表示层事物,我在浏览网页时看不到好的解决方案(以及堆栈溢出)。
案例是:我有一个我将生成链接的元素列表,所有这些元素都将以逗号分隔HTML 。我们来说吧:
var list = [{id: 1, name: "ab"},{id:2, name: "cd"}, ...];
我的链接应该类似于:
<a href="#/someLink/{{ el.id }}">{{ el.name }}</a>
简单,不是吗?所以,基于其他SO问题,我尝试了这个:
<a ng-repeat="el in list" href="#/someLink/{{ el.id }}">{{ el.name }}</a>{{$last ? '' : ', '}}
哪个不起作用,因为此ng-repeat
已经在另一个ng-repeat中,$index
,$last
,$first
可能被外部{ng-repeat
抓住{1}}值而不是内部值,正如我想要的那样。
此外,我不喜欢制作一个可以一次做5件事的HTML单行,因为[1]阅读它会花费成本,[2]它更容易弄乱,而变化,因为复杂性。所以我绝对宁愿把它分成更多行。 但是同时,我不想在逗号之前留出空格,即el1 , el2
。它应该是el1, el2
。最后一件事 - 逗号不在链接中,因为只有元素名称应该链接;逗号是justa分隔符,对吧?
在js-templating引擎(小胡子,hbs等),python,php,ruby,所有内容中,这似乎是一个非常简单的案例待办事项 - 我无法找到一个有角度的干净解决方案。更不用说内置ng-repeat
并不支持这样的基本功能。
答案 0 :(得分:4)
你可以尝试这段代码:
<span ng-repeat="el in list">
<a href="#/someLink/{{ el.id }}">{{ el.name }}</a>{{$last ? '' : ', '}}
</span>
只需稍微修改一下代码,只需为重复添加外部范围
答案 1 :(得分:3)
如果你想要内部ng-repeat来捕获$ last,那么将$ last放在内部ng-repeat中。
<span ng-repeat="el in list">
<a href="#/someLink/{{ el.id }}">{{ el.name }}</a><span ng-if="!$last">, </span>
</span>