【问题标题】:Strange behavior using a JSON in meteor在流星中使用 JSON 的奇怪行为
【发布时间】:2015-06-15 05:53:41
【问题描述】:

在我的流星应用程序中,我有一个包含以下语言列表的 JSON 文件:List of Language Codes in YAML or JSON?

Template.myProfile.helpers({
  isoLang: function(){
    return JSON.parse(Assets.getText("myfile.json"));
  }
});

<select>
{{#each isoLang}}
  whaterver i put here
{{/each}}
</select>

问题是,无论我在帮助程序中返回什么,只要我保存文件,我的应用程序模板就会更改为登录模板(我使用的是铁外层),它不明白这是怎么可能的。

我试图将我的语言列表作为 js 对象获取,但是从公共文件夹或 myProfile 子文件夹(在客户端文件夹中),它给我带来了同样的问题,无论我尝试什么,我都从不输入我的 {{ #each}} 条件。

我在使用这个 json / js 对象时做错了什么?

谢谢你,大卫

【问题讨论】:

  • 我认为问题在于您使用的是{{#each}}。每个都适用于数组。但是该语言列表是一堆不是数组格式的对象。所以你必须把它转换成一个对象数组。否则,如果您使用 {{#with isoLang}},您将通过 {{ab}}, {{aa}}, {{af}} 在 with 语句中单独访问每个组

标签: json meteor


【解决方案1】:

List of Language Codes 既不是 JSON 数组(缺少方括号)也不是 (Mongo) 游标。空格键的#each 的意思是

遍历数组或数据库游标(参见@​​987654322@):

因此,您只需将 JSON 对象转换为 JSON 数组即可。这是一个基本草图:

var JsonObj= {"a":"1","b":"2","c":"3","d":"4"};
var array = []; 
var k = 0
for(var i in JsonObj) {
    if(JsonObj.hasOwnProperty(i)) {
         array[k++] = JsonObj[i]; 
         console.log(">> " + JsonObj[i])
    }
 }
 console.log(array);

【讨论】:

  • 为什么不简单地_.toArray? Meteor 自带下划线默认添加。
猜你喜欢
  • 2014-07-09
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
  • 2016-06-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多