2016-07-27 5 views
2

私は、プロセスの一部としてJSONファイルに保存されたデータを含むデータリストを満たす必要のあるMeteorアプリケーションに取り組んでいます。しかし、私はテンプレートにデータをインポートすることに成功しませんでした。だから私はこれをどのように解決できるのだろうかと思っていた。JSONコンテンツを流星テンプレートにロードする

私はパネル/ skills.jsonにJSONファイルを保存している、それは基本的に次のようになります。

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

そして、これは、HTMLファイルがどのように見えるかです:

<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> 

がありますJSONファイルを.jsアーカイブに取得し、ヘルパーを使用してロードする方法はありますか?

+0

は、顔をしています。その作品が私の答えを編集した場合 –

答えて

1

私は試しませんでしたが、これは動作します。ヘルパーからreactiveVar

  • 復帰へ
  • ストア値を必要と使用して

    1. 負荷JSONファイル

    例:私のANSについてコメント

    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

    私はTemplate.instance()。skills.get()とReactiveVarで必要なJSONファイルを取得できました。しかし、私はそれを反復しようとすると、次のメッセージが表示されます。 "エラー:{{#each}}は現在、配列、カーソル、または偽の値しか受け付けません。 –

    +0

    これは私がHTMLでそれを呼び出すようにしようとしている方法です: '{スキルで{#eachスキル}} <オプション値= {{skill.value}}> {{/各}}' –

    +0

    @CaikeMotta試してみてください。 '{{#each skills.skills}} {{this.value}} {{/ each}}' ..そして、より良いapprochの使用{{{#}} ' –

    0

    使用し

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

    あなたMeteor.methodsでメソッドを作成して、今、あなたのテンプレート

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

    私はまだテストしていないでこのメソッドを呼び出すことができます:)をありがとう、私は使用をalreadこれらのようなもの。

    +1

    'Meteor.call()'からの 'return'はヘルパーと同じスコープにはありません... –

    +0

    私の場合、私はMeteorでSessão.set( 'skills'、result) 。コールリターン。だから私はSessão.get( 'スキル')を返すことができました。うまくできた。他の変数を使用して結果を格納することができます。 –

    関連する問題