私は角度のng-repeat
をgroupBy
とorderBy
で使用しています。 私が達成しようとしているのは、SeatNoによる注文です。 1、2、8、12が、角度は私が1、12、2で与えるもの、8角度ng-repeat orderByとgroupByが正しく注文されていません
PS:私はSeatNoが文字列であることを知っているとparseInt
を試してみましたが、それは動作していないよう
HTML
<tbody ng-if="::!isOnlyAllSeat" ng-repeat="(key, value) in billRaw | groupBy: 'SeatNo' | orderBy: 'SeatNo' track by key">
<tr class="right bg-darkBlue fg-white">
<td colspan="{{::colSpan}}"> Seat {{key==0?"ALL":key}}</td>
<td class="right bill-col-5"><span class="label bg-white fg-black place-right">{{value.length}}</span></td>
</tr>
<tr ng-repeat="item in value | orderBy: 'ClassCode' " class="fg-darkBlue">
<td class="bill-col-1 middle">{{item.ClassCode}}</td>
<td class="text-left bill-col-2 middle">
<span class="">{{item.Name}}</span>
<div class="note-tag-list" ng-if="item.Options">
<div class="note-tag-item note-tag" ng-repeat="question in item.Options track by question.Question_ID">
<div ng-repeat="option in question.Options track by option.Option_ID">
<a href class="label info note-tag">{{option.Option}}
<small class="price-tag" ng-if="option.ActualPrice !== '0.00'">+{{option.ActualPrice | currency}}</small>
</a>
</div>
</div>
</div>
</td>
<td class="text-left bill-col-5 middle">
<div>{{item.ActualPrice | currency}}</div>
<div><small ng-if="item.OptionsTotalActualPrice !== 0">+{{item.OptionsTotalActualPrice | currency}} : Add-on </small></div>
<div ng-if="item.DiscountAmt>0"><span class="fg-red">({{(getDiscount(item) | currency)}})</span> : {{((item.ActionTypeID == 1)? item.DiscountAmt+'% OFF':item.CodeName)}}</div>
<div ng-if="item.ActionTypeID == 1">{{item.CodeName}}</div>
</td>
</tr>
</tbody>
は、ここで私のbillRaw
配列です。
注 -それはSeatNo
[
{"OrderItemID": "329277",
"Name": "Mexican Tacos",
"Delivered": "0",
"ShortName": "MEXICAN TACOS",
"Price": "8.0000",
"MenuItemID": "2318",
"SeatNo": "1",
"SequenceNo": "37",
"AlcoholCheck": "0",
"OStatusID": "2",
"Notes": "",
"Options": [],
"OptionsTotal": 0,
"OptionsTotalActualPrice": 0,
"ActualPrice": "8.00",
"CodeID": 0,
"DiscountAmt": 0,
"ActionTypeID": 0,
"CodeName": 0,
"ReductionType": 0,
"PayerSeq": "0",
"PriceType_ID": "1",
"ParentClassName": "Tacos",
"NetPrice": 8,
"ExtItem_ID": "J9X79NS28M1ZY",
"ExtOrderItem_ID": null,
"Code": null
},
{
"OrderItemID": "329278",
"Name": "Mexican Tacos",
"Delivered": "0",
"ShortName": "MEXICAN TACOS",
"Price": "8.0000",
"MenuItemID": "2318",
"SeatNo": "2",
"SequenceNo": "38",
"AlcoholCheck": "0",
"OStatusID": "2",
"Notes": "",
"Options": [],
"OptionsTotal": 0,
"OptionsTotalActualPrice": 0,
"ActualPrice": "8.00",
"CodeID": 0,
"DiscountAmt": 0,
"ActionTypeID": 0,
"CodeName": 0,
"ReductionType": 0,
"PayerSeq": "0",
"PriceType_ID": "1",
"ParentClassName": "Tacos",
"NetPrice": 8,
"ExtItem_ID": "J9X79NS28M1ZY",
"ExtOrderItem_ID": null,
"Code": null
},
{
"OrderItemID": "329276",
"Name": "Mexican Tacos",
"Delivered": "0",
"ShortName": "MEXICAN TACOS",
"Price": "8.0000",
"MenuItemID": "2318",
"SeatNo": "8",
"SequenceNo": "36",
"AlcoholCheck": "0",
"OStatusID": "2",
"Notes": "",
"Options": [],
"OptionsTotal": 0,
"OptionsTotalActualPrice": 0,
"ActualPrice": "8.00",
"CodeID": 0,
"DiscountAmt": 0,
"ActionTypeID": 0,
"CodeName": 0,
"ReductionType": 0,
"PayerSeq": "0",
"PriceType_ID": "1",
"ParentClassName": "Tacos",
"NetPrice": 8,
"ExtItem_ID": "J9X79NS28M1ZY",
"ExtOrderItem_ID": null,
"Code": null
},
{
"OrderItemID": "329275",
"Name": "Mexican Tacos",
"Delivered": "0",
"ShortName": "MEXICAN TACOS",
"Price": "8.0000",
"MenuItemID": "2318",
"SeatNo": "12",
"SequenceNo": "35",
"AlcoholCheck": "0",
"OStatusID": "2",
"Notes": "",
"Options": [],
"OptionsTotal": 0,
"OptionsTotalActualPrice": 0,
"ActualPrice": "8.00",
"CodeID": 0,
"DiscountAmt": 0,
"ActionTypeID": 0,
"CodeName": 0,
"ReductionType": 0,
"PayerSeq": "0",
"PriceType_ID": "1",
"ParentClassName": "Tacos",
"NetPrice": 8,
"ExtItem_ID": "J9X79NS28M1ZY",
"ExtOrderItem_ID": null,
"Code": null
}
]
編集 SeatNoのtype
がnumber
となるように、私はbillRawを変更した
でソートされます。それはまだあなたは数字にSeatNosを変換するコントローラで
$.each(billRaw, function(i) {billRaw[i].SeatNo = parseInt(billRaw[i].SeatNo)});
を実行してみることができます
_.forEach($scope.billRaw, function(value,key) {
value.SeatNo = parseInt(value.SeatNo);
});
それはストリング値なのでそれをそのまま注文します。あなたはあなたが言ったようにそれをintに変換する必要があります。 parseIntが機能しないのはなぜですか? – Zaki
'orderBy'の' parseInt'は効果がなく、 'groupBy'の' parseInt'は配列のインデックス0,1,2,3を与えます。 –
これを解析するにはどうすればいいですか?実際のjson配列orderBy。 – Zaki