2010-11-01 3 views
9

E 'possibile in Moustache leggere la variabile dalla sezione genitore nella sezione figlio?Baffi: leggere le variabili dalla sezione genitore nella sezione secondaria

per esempio il mio esempio qui sotto, voglio che il {{}} order_store.id a leggere variabili dal suo genitore $ order_store [(indice gamma di loop di bambino di corrente)] [ 'id']

the template.mustache

{{#order_store}}<table> 
    <caption> 
     Store Name: {{name}} 
     Product Ordered: {{products}} 
     Product Weights: {{products_weight}} 
    </caption> 
    <tbody> 
     {{#shipping_method}}<tr> 
      <td> 
       <input type="radio" name="shipping[{{order_store.id}}]" id="shipping-{{id}}" value="{{id}}" /> 
       <label for="shipping-{{id}}">{{name}}</label> 
      </td> 
      <td>{{description}}</td> 
      <td>{{price}}</td> 
     </tr>{{/shipping_method}} 
    </tbody> 
</table>{{/order_store}} 

dati di esempio (in PHP);

   $order_store => array(
       array(
        'id' => 1, 
        'name' => 'Kyriena Cookies', 
        'shipping_method' => array(
         array(
          'id' => 1, 
          'name' => 'Poslaju', 
          'description' => 'Poslaju courier' 
         ), 
         array(
          'id' => 2, 
          'name' => 'SkyNET', 
          'description' => 'Skynet courier' 
         ), 
        ), 
       )); 

risposta

7

Baffi non consente di fare riferimento a oggetti padre. Tutti i dati che si desidera visualizzare all'interno della sezione secondaria devono essere contenuti nell'array figlio.

Ad esempio:

$order_store => array(
array(
    'id' => 1, 
    'name' => 'Kyriena Cookies', 
    'shipping_method' => array(
     array(
      'id' => 1, 
      'name' => 'Poslaju', 
      'description' => 'Poslaju courier', 
      'order_store_id' => '1' 
     ), 
     array(
      'id' => 2, 
      'name' => 'SkyNET', 
      'description' => 'Skynet courier', 
      'order_store_id' => '1' 
     ), 
    ), 
)); 

quindi è possibile utilizzare il tag {{order_store_id}}.

La notazione dei punti non sarebbe di aiuto in questo caso - non darà magicamente accesso all'array genitore. (A proposito, la notazione dei punti non è supportata da tutti i parser dei baffi, quindi è probabilmente meglio evitare di usarli se c'è la possibilità di riutilizzare i modelli con un altro linguaggio di programmazione in futuro.)

+0

In realtà, vorrei prendere @sofia suggerimento e utilizzare il manubrio. js. È compatibile con i baffi ma aggiunge alcune nuove funzionalità, come la ricerca nel contesto genitore. Ho avuto lo stesso problema e il manubrio mi ha aiutato a risolverlo senza modificare il contenuto di JSON. –

+0

@GustavoCardoso La domanda è in cerca di risposta in PHP. –

+0

Ho provato questo ** in js ** e sembra che Moustache mi permetta di fare riferimento a una proprietà di un oggetto genitore semplicemente facendo riferimento a esso, ** se non ci sono nomi sovrapposti nell'array figli ** (se ci sono, I baffi raccoglieranno quello dal bambino). Non ho ancora provato cosa succede in PHP. – Pere

-2

Il trucco è all'inizio del tuo modello di aggiungere:

{{%DOT-NOTATION}} 
+0

cosa?!? ........ –

5

Se il modello deve essere compilato sul lato client, un'altra opzione è quella di utilizzare HandlebarsJS modelli, che sono compatibili con i baffi, e utilizzare la notazione parent:

{{../order_store.id}} 
1

ho avuto lo stesso problema, con oggetto vuoto che non è null

<div class="photo"> 
    {{#picture.id}} 
     <img src="{{picture.src}}" alt="{{picture.name}}" /> 
    {{/picture.id}} 
</div> 

come potete vedere posso usare picture.id nell'istruzione "if" picture.src valore