2015-04-07 4 views
1

Почему это не работает?Метеоритные пробелы не могут получить доступ к родительскому контексту

Template.tests.helpers 
    test_value: -> "Test" 
    contacts: -> Contacts.find() 
    contact: -> Contacts.findOne() 

Пример 1:

<template name="tests"> 
    {{test_value}} 
    {{#with contact}} 
      <p>{{firstname}}</p> 
      <p>{{../test_value}}</p> 
    {{/with}} 
</template> 

../test_value внутри контакты не не визуализируется

Пример 2

<template name="tests"> 
    {{>testContact}} 
</template> 

<template name="testContact"> 
    {{test_value}} 
    {{#with contact}} 
     <p>{{firstname}}</p> 
     <p>{{../test_value}}</p> 
    {{/with}} 
</template> 

ничего не работает в этом примере. Я бы предположил, что если контекст данных не определен в шаблоне testContact, он наследует контекст данных его родителя.

Пример 3

<template name="tests"> 
    {{>testContact}} 
</template> 

<template name="testContact"> 
    {{test_value}} 
    {{#with ../contact}} 
     <p>{{firstname}}</p> 
     <p>{{../test_value}}</p> 
    {{/with}} 
</template> 

тоже не работает.

Это сводит меня с ума!

РЕДАКТИРОВАТЬ

Пример 4

<template name="tests"> 
    {{#with contact}} 
     {{> testContact}} 
    {{/with}} 
</template> 

<template name="testContact"> 
    <p>{{firstname}}</p> 
    <p>{{../test_value}}</p> 
    </p> 
</template> 

Здесь можно видеть, что контекст данных контакта в шаблоне testContact. Тогда я ожидал бы {{../test_value}}, поскольку test_value находится на том же уровне, что и контакт в моем помощнике, но это не так.

Пример 5

<template name="tests"> 
    {{#each contacts}} 
     {{> testContact}} 
    {{/each}} 
</template> 

<template name="testContact"> 
    <p>{{firstname}}</p> 
    <p>{{../test_value}}</p> 

</template> 

ответ

1

Попробуйте пример 1 без использования ../ перед тем TestValue.

Помощники не совпадают с контекстом данных, поэтому примеры 2 и 3 не работают.

Если вспомогательная функция тестового значения зависела от контекста родителей, то вам придется использовать ../ для передачи аргументов помощнику testvalue.

+0

Спасибо за ваш ответ! Означает ли это, что я должен использовать помощники только для просмотра материалов на экране и использовать другие вещи, например, железный маршрутизатор для определения моего контекста данных? – ndemoreau

+0

Используйте помощники, где хотите. Вы можете передавать данные от помощников до дочерних шаблонов, написав {{> testcontact data = data testvalue = testvalue}} –

+0

Извините, что беспокою вас снова, но когда я могу использовать ../ then? Я создал пример 4 в моем вопросе выше. Это хороший пример того, где я ожидаю, что он сработает, но он не ... – ndemoreau

Смежные вопросы