Mám pomocnú funkciu, ktorá vracia pole objektov a každý objekt matice má kľúčových vydavateľov, čo je objekt obsahujúci kľúče. Každý kľúč má opäť objekt.
priceData:function(){
var colection=[
{contract:"nn",publishers:{GVM:{ask:1,bid:2},SET:{ask:6,bid:3}}},
{contract:"BB",publishers:{GVM:{ask:11,bid:99},SET:{ask:23,bid:34}}}
]
return colection
}
Teraz v šablóne sa to snažím použiť takto
<table class="table">
<tbody>
{{#each priceData}}
<tr>
{{#with publishers}}
<td>{{ask}}</td>
<td>{{bid}}</td>
{{/with}}
</tr>
{{/each}}
</tbody>
</table>
Môžem použiť #with v #each opakovanie, pretože to spôsobuje chybu. Ak nie, ako môžem zobraziť takéto informácie o zbierke v tabuľke? Práve teraz je jeho prázdna tabuľka
odpovede:
2 pre odpoveď č. 1Nie je problém s each
a with
, môžete ich skombinovať a hniezdiť podľa vašej vôle. Jediná vec, ktorú treba mať na pamäti, je kontext: každý z blokov prechádza hlbšie do kontextuale zároveň umožňuje prístup k vonkajším kontextom (čo som osobne neodporúčal), takže ak odstránite všetky znaky a použijete celý kód takto:
<table class="table">
<tbody>
{{#each priceData}}
<tr>
{{#with publishers}}
<td>{{ask}}</td>
<td>{{bid}}</td>
{{/with}}
</tr>
{{/each}}
</tbody>
</table>
potom bude všetko v poriadku. Ale uistite sa, že dátová štruktúra zodpovedá tomuto kódu. Ale to nie je.
Potrebujete prístup ask
a bid
vnútri publishers
cez jeden GVM
alebo SET
, Predstavme si, že potrebujete prvú:
<table class="table">
<tbody>
{{#each priceData}}
<tr>
{{#with publishers}}
<td>{{GVM.ask}}</td>
<td>{{GVM.bid}}</td>
{{/with}}
</tr>
{{/each}}
</tbody>
</table>
Nechajte dekonštruovať celý kód, aby bol obraz jasnejší.
Keď používate
{{priceData}}
potom odkazujete na to, čo sa pomocník vráti, t.
[{
contract: "nn",
publishers: {
GVM: {
ask: 1,
bid: 2
},
SET: {
ask: 6,
bid: 3
}
}
}, {
contract: "BB",
publishers: {
GVM: {
ask: 11,
bid: 99
},
SET: {
ask: 23,
bid: 34
}
}
}]
Takže keď používate
{{#each priceData}}
...
{{/each}}
narazíte do kontextu toho, čo pomocník vráti a iteruje nad položkami poľa. Napríklad, prvý by bol
{
contract: "nn",
publishers: {
GVM: {
ask: 1,
bid: 2
},
SET: {
ask: 6,
bid: 3
}
}
}
Ďalej to, čo robíte, je
{{#with publishers}}
...
{{/with}}
Pre prvú položku poľa je kontext
GVM: {
ask: 1,
bid: 2
},
SET: {
ask: 6,
bid: 3
}
a pre druhú je
GVM: {
ask: 11,
bid: 99
},
SET: {
ask: 23,
bid: 34
}
Potom sa to pokúšate
{{ask}}
a to je miesto, kde váš kód zlyhá, pretože tam nie je ask
vlastnosť štruktúry v aktuálnom kontexte. Ale existujú vlastnosti GVM
a SET
, Takže si vyber jednu, ktorá sa vám páči, a použite ju takto:
{{GVM.ask}}
Dúfam, že to pomôže.