【问题标题】:Load JSON content into a meteor template将 JSON 内容加载到流星模板中
【发布时间】:2016-07-27 03:29:06
【问题描述】:

我正在开发一个 Meteor 应用程序,该应用程序应该使用存储在 JSON 文件中的一些数据作为流程的一部分来实现数据列表。但是,我没有成功将其数据导入模板。所以我想知道如何解决这个问题。

我已经把JSON文件存到了panel/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 存档中,并使用帮助程序加载它?谢谢:)

【问题讨论】:

  • 评论了我的ans,看看。如果它的作品编辑我的答案

标签: javascript json templates meteor


【解决方案1】:

我没有尝试,但这会奏效。

  1. 使用 require 加载 json 文件
  2. 将值存储到reactiveVar
  3. 从助手返回

示例:

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();
    }
});

【讨论】:

  • 我设法通过 Template.instance().skills.get() 和 ReactiveVar 获得了我需要的 JSON 文件。但是,当我尝试对其进行迭代时,我收到以下消息:“错误:{{#each}} 当前仅接受数组、游标或错误值。”
  • 这就是我试图在 HTML 中调用它的方式:{{#each skill in skills}} &lt;option value={{skill.value}}&gt;&lt;/option&gt; {{/each}}
  • @CaikeMotta 尝试{{#each skills.skills}} {{this.value}} {{/each}}.. 以及更多更好的方法使用{{#with}}
【解决方案2】:

使用 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;
        }
    }
})

我还没有测试,但我已经使用了类似的东西。

【讨论】:

  • 就我而言,我在 Meteor.call 返回中使用了 Sessão.set('skills', result)。所以我可以返回 Sessão.get('skills')。好好工作。您可以使用其他变量来存储结果。
猜你喜欢
  • 2015-07-16
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多