2016-03-20 6 views
0

So versuche ich einen Artikel als Benutzer- und Editoransicht anzuzeigen. Ich benutze keinen Router, also mache ich das Abonnement unter onCreated.Meteor: Daten zur Verwendung auf Sub-Vorlagen erhalten

Aber ich mag es nicht für Titel und Inhalt ein findOne() zu tun. Ich denke, ich kann die kompletten Daten in einer Find-Anfrage bekommen und diese Daten in beiden Templates (Benutzer/Editor) verwenden. Aber wie soll ich das machen?

Vorlagen

<template name="example"> 
    {{#if isEditorView}} 
     {{ > editor }} 
    {{else}} 
     {{ > user }} 
    {{/if}} 
</template> 

<template name="editor"> 
    <input type="text" placeholder="title" value="{{title}}"> 
    <textarea placeholder="article">{{content}}</textarea> 
</template> 

<template name="user"> 
    <h1>{{title}}</h1> 
    {{{content}}} 
</template> 

Helfer

Template.example.onCreated(function() { 
    Meteor.subscribe('articles'); 
}); 

Template.example.helpers({ 
    isEditorView: function() { 
     return Session.get('editorView') ? true : false; 
    }, 

    title: function() { 
     var doc = Collection.findOne(); 
     return doc.title; 
    }, 

    content: function(plain) { 
     var doc = Collection.findOne(); 
     return doc.content; 
    } 
}); 

Antwort

2

Verwenden {{#with }} den Datenkontext setzen:

<template name="example"> 
{{#with doc}} 
    {{#if isEditorView}} 
    {{ > editor }} 
    {{else}} 
    {{ > user }} 
    {{/if}} 
{{/with}} 
</template> 

Dann nur Sie einen Helfer brauchen:

Template.example.helpers({ 
    isEditorView: function() { 
    return Session.get('editorView') ? true : false; 
    }, 
    doc: function() { 
    return Collection.findOne(); 
    } 
}); 
Verwandte Themen