2016-07-27 14 views
2

Ich arbeite an einer Meteor-Anwendung, die einen Datenlisten mit einigen Daten erfüllen sollte, die in einer JSON-Datei als Teil eines Prozesses gespeichert werden. Es ist mir jedoch nicht gelungen, seine Daten in eine Vorlage zu importieren. Also habe ich mich gefragt, wie ich das lösen könnte.Lade JSON-Inhalt in eine Meteorschablone

Ich habe die JSON-Datei in Panel/skills.json gespeichert, und es sieht aus wie dieser im Grunde:

{"skills":[ 
{"value":".NET Compact Framework"}, 
{"value":".NET Framework"}, 
{"value":".NET para Web"} 
]} 

Und das ist, wie die HTML-Datei wie folgt aussieht:

<div class="required"> 
    <input type="text" class="form-control" list="tags"> 
    <datalist class="form-control" id="tags" name="tags"> 
    {{#each skills}} 
     <option value={{value}}></option> 
    {{/each}} 
    </datalist> 
</div> 

Gibt es eine Möglichkeit, die JSON-Datei in ein .js-Archiv zu bekommen und mit Hilfe von Helfern zu laden? Danke :)

+0

auf meinem am kommentiert, hat einen Blick. wenn seine Werke meine Antwort bearbeiten –

Antwort

1

Ich habe nicht versucht, aber das wird funktionieren.

  1. Last json Datei benötigt mit
  2. speichern Werte zu reactiveVar
  3. Rückkehr von Helfern

Beispiel:

var json = require('panel/skills.json'); 

Template.myTemplate.onCreated(function() { 
this.skills = new ReactiveVar(json); 
}); 

Template.myTemplate.helpers({ 
    skills: function(){ 
     return Template.instance().skills.get(); 
    } 
}); 
+0

Ich habe es geschafft, die JSON-Datei zu bekommen, die ich mit Template.instance(). Skills.get() und ReactiveVar brauchte. Wenn ich versuche, es zu iterieren, erhalte ich die folgende Meldung: "Fehler: {{#each}} akzeptiert zur Zeit nur Arrays, Cursor oder falsche Werte." –

+0

Dies ist, wie ich es zu nennen im HTML versuche: '{{#each Mann Fähigkeiten}} {{/ each}}' –

+0

@CaikeMotta probiere '{{#ach jedem skills.skills}} {{this.value}} {{/ each}}' .. und besser approch benutze '{{#with}}' –

0

Verwenden eines Verfahrens Sie Meteor.methods diese Methode in Ihrer Vorlage erstellen

meteor.methods({ 
    getSkills: function(){ 
     var Skills = JSON.parse(Assets.getText("parse/skills.json")); 
     return Skills.skills; 
    } 
}) 

Und jetzt rufen

Template.skills.helpers({ 
    skills: function(){ 
     Meteor.call('getSkills', function(err, result){ 
      return result; 
     } 
    } 
}) 

ich noch nicht getestet, aber ich alread Einsatz etwas wie diese.

+1

Die Rückkehr von der 'Meteor.call()' ist nicht im gleichen Umfang wie der Helfer ... –

+0

In meinem Fall habe ich Sessão.set ('Fähigkeiten', Ergebnis) in Meteor Rufen Sie zurück. So könnte ich Sessão.get ("Fähigkeiten") zurückgeben. Gut arbeiten. Sie können eine andere Variable verwenden, um das Ergebnis zu speichern. –