2014-12-19 12 views
2

У меня проблема с запятыми, разделенными ng-repeat и ng-if.AngularJS Запятая для формата JSON

Я хочу, чтобы результат был разделен запятой, но последний элемент также включает comma.

Мой Expectation является: AAA, CCC, EEE

Но выход приходит как: AAA, CCC, EEE,

ng-repeat блок, как показано ниже:

<div ng-repeat="provider in providersInfo"> 
    <span ng-repeat="policy in policiesInfo | filter:{ProviderId : provider.ProviderId }:true"> 
     <span ng-if="policy.HasChecked">{{ policy.PolicyName }}{{$last ? '' : ', '}}</span> 
    </span> 

    <!-- or --> 

    <span ng-repeat="policy in policiesInfo | filter:{ProviderId : provider.ProviderId }:true"> 
     <span ng-if="policy.HasChecked">{{$index == 0 ? '' : ', '}}{{ policy.PolicyName }}</span> 
    </span> 
</div> 

Здесь policiesInfo это присоединиться к справочной таблице, выход от JSON формат:

За каждый ProviderId он будет содержат 6 подстановок записей:

policiesInfo = [ 
    {PolicyId : 1, PolicyName: 'AAA', ProviderId: 25, HasChecked: true }, 
    {PolicyId : 2, PolicyName: 'BBB', ProviderId: 25, HasChecked: false }, 
    {PolicyId : 3, PolicyName: 'CCC', ProviderId: 25, HasChecked: true }, 
    {PolicyId : 4, PolicyName: 'DDD', ProviderId: 25, HasChecked: false }, 
    {PolicyId : 5, PolicyName: 'EEE', ProviderId: 25, HasChecked: true }, 
    {PolicyId : 6, PolicyName: 'FFF', ProviderId: 25, HasChecked: false } 
] 

Здесь $last будет считать PolicyId : 6 и $index будет считать PolicyId : 1

ответ

4

Ваш фактический $ последний (FFF) не выводится, так как имеет HasChecked: false, поэтому последняя запятая "," вы» видение - это тот, который отображается для EEE.

Чтобы достичь того, чего вы хотите, вы должны отфильтровать изHasChecked: false первым, так что $ последний будет применяться к отфильтрованному массиву:

<span ng-repeat="policy in policiesInfo | filter: {HasChecked: true, ProviderId: provider.ProviderId}"> 
    {{policy.PolicyName}}<span ng-if="!$last">,</span> 
</span> 

plunker

+0

Я решил проблему, добавив еще 1 фильтр, но ваш ответ мне тоже помог о фильтре ** HasChecked ** – Arulkumar

+0

Ваше предложение работает. – Arulkumar

1

я достиг результата на добавив еще один фильтр:

<span ng-repeat="policy in policiesInfo | filter:{ProviderId : provider.ProviderId }:true | filter: checkedPolicies"> 
    <span>{{ insurancepolicy.PolicyTypeName }}{{$last ? '' : ', '}}</span> 
</span> 

$scope.checkedPolicies = function(policyItem) { 
    return policyItem.HasChecked; 
}; 
+0

Я забыл про ваш другой фильтр - добавил его к ответу –

Смежные вопросы