So sehen die Params von einem Article-Batch (3 Artikel) für die Article-API aus:
{
"id": false,
"subId": false,
"version": 1,
"useNumberAsId": "true",
"module": "api",
"controller": "articles",
"action": "index",
"0": {
},
"1": {
},
"2": {
}
}
Int-Index und selbst ein Array, dadurch ist ein einzelner Artikel darin zu erkennen. Id gibt es in den Params direkt auch noch, also ist das kein Indikator für eine Batch-Request.
<div ng-reapeat="item in items">
{{$index}} - {{item.name}}
</div>
Wenn man mit Sub-Items arbeitet.
<ul>
<li ng-reapeat="item in items" ng-init="mainIndex=$index">
{{mainIndex}}. - {{item.name}}
<ul ng-if="item.subs && item.subs.length>0">
<li ng-repeat="sub in item.subs" ng-init="subIndex=$index">
{{mainIndex}}.{{subIndex}}. {{sub.name}}
</li>
</ul>
</li>
</ul>
Und komplett rekursiv.
<script type="text/ng-template" id="subs.html">
<li ng-repeat="item in parent.subs">
{{prefixIndex}}{{$index}}. {{item.name}}
<ul ng-if="item.subs && item.subs.length>0" ng-include="subs.html" ng-init="prefixIndex=prefixIndex+$index+'.'; parent=item">
</ul>
</li>
</scipt>
<ul ng-if="theRealParentItem.items && theRealParentItem.items.length>0" ng-include="subs.html" ng-init="prefixIndex=''; parent=theRealParentItem">
<ul>
Diese Übergabe an Werten ist auch im Zusammenspiel mit SVG sehr praktisch, weil man so Koordinaten nicht in den Objekten oder im Controller hinterlegen muss, sondern sie immer weiter durch reichen kann, um für jedes Level einen eigenen Ursprung definieren zu können.
Ein wenig besinnliches zu Weihnachten. Performance-Analyse auf Oracle Datenbanken. Wenn man heraus finden will welche SQLs viel Zeit verbrauchen, kann man das Query hier verwenden. Es ist ein erster Ansatz und keine absolute Lösung. Aber wenn man Probleme hat, ist es ein guter Einstieg in die Analyse.
select ROUND(disk_reads/decode(executions,0,1,executions)/300) EXTIME, SQL_TEXT
from v$sql
where disk_reads/decode(executions,0,1,executions)/300 >1
and executions>0
order by (disk_reads/decode(executions,0,1,executions)/300) DESC
Oft hilft es am Ende einfach einen Index zu setzen. Aber manchmal muss man tiefer in die Materie gehen.