2010-11-01 9 views
9

Czy w przypadku wąsów można odczytać zmienną z sekcji nadrzędnej w sekcji podrzędnej?Wąsy: odczyt zmiennych z sekcji nadrzędnej w sekcji podrzędnej

na przykład moim przykładzie poniżej, chcę {{}} order_store.id czytać zmiennej od jego rodzic $ order_store [(indeks tablicy z pętli prądowej dziecięcej)] [ 'id']

szablon.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}} 

przykładowe dane (w 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' 
         ), 
        ), 
       )); 

Odpowiedz

7

Wąsy nie pozwala odnieść się do obiektów nadrzędnych. Wszystkie dane, które chcesz wyświetlić w sekcji podrzędnej, muszą znajdować się w tablicy podrzędnej.

Na przykład:

$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' 
     ), 
    ), 
)); 

Następnie można użyć tagu {{order_store_id}}.

Notacja Dot nie pomoże w tym przypadku - nie zapewni magicznie dostępu do macierzy nadrzędnej. (Nawiasem mówiąc, notacja kropkowa nie jest obsługiwana przez wszystkie parsery wąsów, więc najlepiej jest jej unikać, jeśli istnieje szansa, że ​​będziesz chciał ponownie użyć szablonów z innym językiem programowania w przyszłości.)

+0

Właściwie, bym skorzystał z sugestii @sofia i używał Handlebar. js. Jest kompatybilny z wąsami, ale dodaje nowe funkcje, jak wyszukiwanie w kontekście nadrzędnym. Miałem ten sam problem i Handlebar pomógł mi rozwiązać bez żadnych zmian moje treści json. –

+0

@GustavoCardoso Pytanie szuka odpowiedzi w PHP. –

+0

Próbowałem tego ** w js ** i wygląda na to, że wąsy pozwala mi odwoływać się do właściwości obiektu nadrzędnego, po prostu odwołując się do niego, ** jeśli nie ma nakładających się nazw w tablicy dzieci ** (jeśli istnieją, Wąsy odbierają ten od dziecka). Nie testowałem jednak tego, co dzieje się w PHP. – Pere

-2

Sztuką jest tu na początku szablonu, aby dodać:

{{%DOT-NOTATION}} 
+0

co?!? ........ –

5

Jeśli szablon ma zostać skompilowany po stronie klienta, innym rozwiązaniem jest użycie HandlebarsJS szablony, które są zgodne z wąsem i użyć notacji nadrzędny:

{{../order_store.id}} 
1

miałem ten sam problem, z pustego obiektu, który nie jest null

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

jak widać Mogę użyć picture.id w oświadczeniu "if" picture.src wartość