/ / Meteor (medzerníky): Ako používať #with a #each spolu - meteor, handlebars.js, meteor-blaze, spacebars

Meteor (spacebars): Ako používať #with a #each spolu - meteor, handlebars.js, meteor-blaze, spacebars

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ď č. 1

Nie 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.