【问题标题】:Code generation with parameter is not working as expected带参数的代码生成未按预期工作
【发布时间】:2015-01-02 21:40:55
【问题描述】:

我创建了使用 handlebars 在 HTML 文件中生成一些内容的程序,目前这些内容是硬编码的,现在我想发送一些参数,当我从模型中传递数据时喜欢关注

that.model = {
func: "Jhon"

};

这是相关的车把

user.test( {{func}}, function( ) 
{

});

生成好的HTML文件,我进入了HTML文件

 ...
 user.test( jhon, function( ) 
    {

    });

现在我想根据数组为不同的用户名生成多次我应该怎么做? 我创建了以下数组

        var userList = {
            user: []
        };

        for (var i = 0; i < selectedUser.length; i++) {
            userList.user.push({
                name: selectedUser[i].getText()
            });
        }

这是模板

 {{#each userList.user}}
    user.test( {{name}}, function( ) 
    {

    });
  {{/each}}

在生成过程之后,我得到了我不期望的结果...... 首先它不会复制条目并放入[object Object]

user.test( [object Object],[object Object], function( ) 
{

});

假设我有多个像 jhon,mike,peter 这样的用户

我希望生成的 HTML 文件 在生成后如下所示: 示例 用户测试(约翰,函数() {

});

user.test( mike, function( ) 
{

});

user.test( peter, function( ) 
{

});

更新

我已将我的对象更改为

for (var i = 0; i < selectedUser.length; i++) {
        userList.user.push({
        selectedUser[i].getText()
        });
    }

现在我得到了

   user.test( jhon,mike,peter function( ) 
    {

    });

没有迭代,我想像示例中一样获得 3 次...如何 我使用车把 1.3 或者也许还有其他方法可以创建循环。

【问题讨论】:

  • 您能否还显示用于制作此功能的其余代码、使用数据和 selectedUser 代码调用车把。如果你能制作一个小提琴就更好了
  • 是传递给模板的另一个对象的 userList 部分还是根?
  • @Quince-这是对象根,我已经完全按照帖子中的方式移动了它,顺便说一句,感谢您的支持!
  • 如果它的根应该不是 {{#each user}}
  • @Quince-这是我第一次使用把手,所以我不确定模板的代码是否可以。例如,如果我在数组中有 3 个项目,我希望我会生成它3次,但只生成一个,我使用#each userList.user ...

标签: javascript jquery mustache handlebars.js


【解决方案1】:

如果没有在页面上看到它们,很难判断代码中的错误到底在哪里。

但这是我执行您的任务的尝试:

这是车把模板:

<script id="template" type="text/x-handlebars-template">
  {{#each user}}
    user.test( {{name}}, function(){});
  {{/each}}
</script>

我使用的 javascript 看起来像这样:

 var userList = {
     user: [{name : "Mike"},{name : "Adam"},{name : "John"}]
 };

 var source = $("#template").html();
 var template = Handlebars.compile(source);

$("#output").html(template(userList));

给出下一个输出:

user.test( Mike, function(){}); 
user.test( Adam, function(){}); 
user.test( John, function(){});

你可以在jsfiddle看到它的实际效果

【讨论】:

  • HI Igor 1+,我有一些类似的问题,我的问题是我应该如何将生成的代码放在一个下面而不是放在同一行中。谢谢!
  • 我想你可以添加&lt;br/&gt;。这是示例jsfiddle.net/wLkgyw7g/5
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多