我定义了一组语言对象:
$scope.languages = [
{'name':'English', value:'english', 'checked':true, 'available': true},
{'name':'German', value:'german', 'checked':false, 'available': true},
{'name':'Spanish', value:'spanish', 'checked':true, 'available': true}
];
然后我在这样的复选框中显示它们:
<div class="form-group">
<label for="description">Languages</label>
<div class="checkbox" data-ng-repeat="language in languages">
<label><input type="checkbox" ng-model="language.checked">{{language.name}}</label>
</div>
</div>
当他们检查和关闭时,我会显示如下列表:
<div class="dataRow">
<div class="dataLabel">Languages:</div>
<div class="dataValue text-success" data-ng-repeat="language in languages">
<span ng-if="language.checked">{{language.name + ($last ? '' : ',')}}</span>
</div>
<div class="clear"></div>
</div>
只要选择了最后一种语言,就不会显示最终的逗号。但如果未选择最后一种语言(西班牙语),则会错误地显示最终的逗号。
而不是$last
我需要像$last(isChecked)
这样的东西。我该怎么做?
答案 0 :(得分:2)
您可以通过在ng-repeat中添加过滤器来仅对已检查的项目进行迭代,如下所示:
<div class="dataRow">
<div class="dataLabel">Languages:</div>
<div class="dataValue text-success" data-ng-repeat="language in languages | filter: {checked: true}">
{{language.name + ($last ? '' : ',')}}
</div>
<div class="clear"></div>
</div>
这样你知道最后一个元素被检查了。
这是一个工作小提琴http://jsfiddle.net/q7ch1ysh/
答案 1 :(得分:0)
只需在三元组中指定:
fa-minus
答案 2 :(得分:0)
试试这个:
<div class="dataValue text-success" data-ng-repeat="language in languages track by $index">
<span ng-if="language.checked">{{language.name + (($index==languages.length && language.checked) ? '' : ',')}}</span>
</div>