2012-10-22 2 views
8

In Meteor kann ich verschiedene Template-Helfer wie folgt festgelegt:Meteor gesetzt Gesamtvorlage Kontext

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

Das ist sehr gut, aber wenn ich eine Menge Variablen habe ich sie nicht einzeln einstellen will, ich will um den Kontext an die Hauptvorlage zu übergeben.

Wie mache ich das?

Das funktioniert nicht. THanks

Antwort

12

Sie können den Kontext der Vorlage festgelegt, wenn Sie es nennen:

{{> story data}} 

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

Oder Sie können einfach {{#with}} verwenden die Vorlage Kontext on the fly zu setzen:

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

Sie sind absolut auf dem richtigen Weg, aber verpasst, Ihre Vorlage Variable wie Sie es definiert verwenden. Wie Template.story.data definiert ist, ein Objekt zurück, sollten Sie es wie ein Objekt verwenden:

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

Voilá. Natürlich kann jede Template-Variable mehr als nur einen String enthalten.

+2

Dank dieser funktioniert aber , sollte es keinen Weg geben, einen Hauptkontext zu setzen? Meteor Docs sagt, dass dies der angenommene Kontext ist. Es sollte eine Möglichkeit geben, 'this' anstelle von' data' zu setzen. Vielen Dank. – Harry