2016-07-27 45 views
2

我正在處理一個Meteor應用程序,該應用程序應該滿足數據列表的某些數據存儲在JSON文件中作爲進程的一部分。但是,我沒有成功將其數據導入模板。所以我想知道如何解決這個問題。將JSON內容加載到流星模板

我已經存儲了JSON文件到面板/ skills.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文件

    例子:

    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 in skills}} {{/ each}} –

    +0

    @CaikeMotta嘗試 '{{#each skills.skills}} {{this.value}} {{/ each}}'..並更好地接受使用'{{#with}}' –

    0

    使用可以創建你Meteor.methods的方法

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

    現在在你的模板

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

    我沒有測試尚未調用此方法,但我alread使用像這樣的東西。

    +1

    從'Meteor.call()'返回'不在幫助器的範圍... –

    +0

    在我的情況下,我在流星中使用Sessão.set('技能',結果) 。致電回報。所以我可以返回Sessão.get('技能')。工作得很好。您可以使用其他變量來存儲結果。 –