2012-10-22 7 views
8

W meteor mogę ustawić różne pomocników szablonów tak:Meteor ustawić ogólny kontekst szablonu

Template.story.title = function() { 
    return "title"; 
}; 
<template name="story"> 
    <h3>{{title}}</h3> 
    <p>{{description}}</p> 
</template> 

co jest dobre, ale jeśli mam wiele zmiennych, nie chciałbym, aby ustawić je indywidualnie, chcę przekazać kontekst do głównego szablonu.

Jak to zrobić?

Template.story.data = function() { 
    return {title:"title", description:"desc"}; 
}; 
<template name="story"> 
    <h3>{{title}}</h3> 
    <p>{{description}}</p> 
</template> 

To nie działa. Dziękujemy

Odpowiedz

12

Można ustawić kontekst szablonu kiedy to nazwać:

{{> story data}} 

Template.outerTemplate.data = function() { 
    return {title:"title", description:"desc"}; 
} 

Albo można po prostu użyć {{#with}} ustawić kontekst szablonu, na bieżąco:

{{#with data}} 
    {{title}} 
{{/with}} 
5

Jesteś absolutnie na dobrej drodze, ale nie wykorzystałeś swojej zmiennej szablonu tak, jak ją zdefiniowałeś. Jak Template.story.data jest zdefiniowana, aby powrócić do obiektu, należy używać go jak przedmiot:

<template name="story"> 
    <h3>{{data.title}}</h3> 
    <p>{{data.description}}</p> 
</template> 

voila. Oczywiście każda zmienna szablonu może zawierać więcej niż tylko ciąg znaków.

+2

Thanks to działa, ale , czy nie powinien istnieć sposób na określenie głównego kontekstu? meteor docs mówi, że "ten" jest założonym kontekstem. Powinien istnieć sposób na ustawienie 'this' zamiast' data'. Dzięki. – Harry