Javascript 在把手中的对象上迭代
我在使用“每个”辅助对象迭代对象时遇到问题。我知道这应该很简单,但在做了一些研究之后,我仍然不知道我做错了什么 我将所有内容都保存在js文件中:Javascript 在把手中的对象上迭代,javascript,handlebars.js,Javascript,Handlebars.js,我在使用“每个”辅助对象迭代对象时遇到问题。我知道这应该很简单,但在做了一些研究之后,我仍然不知道我做错了什么 我将所有内容都保存在js文件中: var model = { name: 'John', surname: 'Smith' }; var source = '{{#each model}} \ <p>Key: {{@key}}, Value: {{this}} </p>
var model = {
name: 'John',
surname: 'Smith'
};
var source = '{{#each model}} \
<p>Key: {{@key}}, Value: {{this}} </p> \
{{/each}} '
var template = Handlebars.compile(source);
var html = template(model);
var模型={
姓名:'约翰',
姓:史密斯
};
var source='{{#每个模型}}\
键:{{@Key}},值:{{{this}}\
{{/每个}}'
var template=handlebar.compile(源代码);
var html=模板(模型);
当我检查html变量的值时,它是一个空字符串。如何让车把真正构建我想要的html
编辑:
我自己找到了答案。基本上,要使用#每个模板,您必须在与模板一起使用的模型中有一个命名对象。这将有助于:
var model = {
person:{
name: 'John',
surname: 'Smith'
}
};
var source = '{{#each person}} \
<p>Key: {{@key}}, Value: {{this}} </p> \
{{/each}} '
var template = Handlebars.compile(source);
var html = template(model);
var模型={
人:{
姓名:'约翰',
姓:史密斯
}
};
var source='{{#每个人}}\
键:{{@Key}},值:{{{this}}\
{{/每个}}'
var template=handlebar.compile(源代码);
var html=模板(模型);
#每个都需要一个数组,您的json是否包含一个名为model的数组而不是一个对象?根据Handlebar文档#每个都可以接受对象:另外,对于对象迭代,{{@key}}引用当前的键名:{{{{key}每个对象}{{@key}}:{{{this}}{/each}
通过@first和@last变量记录迭代的第一步和最后一步,然后迭代数组。当在一个对象上迭代时,只有@first是可用的。基本上,模型中必须有另一个对象才能对其进行迭代。