2014-12-19 67 views
2

我有一個問題,用逗號分隔ng-repeatng-ifAngularJS逗號分隔爲JSON格式

我想以逗號分隔結果,但最後一項還包括comma

我的期望是: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 2014-12-19 07:21:51

+0

您的建議正在工作。 – Arulkumar 2014-12-19 07:32:19

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

我忘了你的其他過濾器 - 將它添加到答案 – 2014-12-19 07:21:20