Javascript 在把手中的对象上迭代

Javascript 在把手中的对象上迭代,javascript,handlebars.js,Javascript,Handlebars.js,我在使用“每个”辅助对象迭代对象时遇到问题。我知道这应该很简单,但在做了一些研究之后,我仍然不知道我做错了什么 我将所有内容都保存在js文件中: var model = { name: 'John', surname: 'Smith' }; var source = '{{#each model}} \ <p>Key: {{@key}}, Value: {{this}} &nbsp;</p>

我在使用“每个”辅助对象迭代对象时遇到问题。我知道这应该很简单,但在做了一些研究之后,我仍然不知道我做错了什么

我将所有内容都保存在js文件中:

    var model = {
        name: 'John',
        surname: 'Smith'
    };

    var source = '{{#each model}} \
        <p>Key: {{@key}}, Value: {{this}} &nbsp;</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}} &nbsp;</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是可用的。基本上,模型中必须有另一个对象才能对其进行迭代。