Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 车把模板未按预期渲染_Backbone.js_Handlebars.js - Fatal编程技术网

Backbone.js 车把模板未按预期渲染

Backbone.js 车把模板未按预期渲染,backbone.js,handlebars.js,Backbone.js,Handlebars.js,下面是在主干视图中呈现的代码: var template = Handlebars.compile($('#some-hbs-template').html()); var rendered = template({'hi':'sir','users':[{'username:':'denman','firstName': 'alex', 'lastName': 'mills'}]}); this.$el.html(rendered); 模板如下所示: <script

下面是在主干视图中呈现的代码:

   var template = Handlebars.compile($('#some-hbs-template').html());
   var rendered = template({'hi':'sir','users':[{'username:':'denman','firstName': 'alex', 'lastName': 'mills'}]});
   this.$el.html(rendered);
模板如下所示:

<script id="some-hbs-template" type="text/x-handlebars-template">
    hello:{{hi}}
    <table>
        <thead>
        <th>Username</th>
        <th>Real Name</th>
        <th>Email</th>
        </thead>
        <tbody>
        {{#users}}
            <tr>
                <td>{{username}}</td>
                <td>{{firstName}} {{lastName}}</td>
                <td>{{email}}</td>
            </tr>
        {{/users}}
        </tbody>
    </table>
</script>

你好:{{hi}}
用户名
真名
电子邮件
{{{#用户}
{{username}}
{{firstName}}{{lastName}}
{{email}}
{{/用户}
呈现到页面的唯一内容是表标题:

用户名实名电子邮件

我不明白为什么没有其他东西出现?“hello:”显示,但“hi”也不渲染。

您需要使用辅助对象在数组上循环
#用户
不是内置的帮助程序

<script id="some-hbs-template" type="text/x-handlebars-template">
    <table>
        <thead>
        <th>Username</th>
        <th>Real Name</th>
        <th>Email</th>
        </thead>
        <tbody>
        {{#each users}} // NOTICE THIS...
            <tr>
                <td>{{username}}</td>
                <td>{{firstName}} {{lastName}}</td>
                <td>{{email}}</td>
            </tr>
        {{/each}} //...AND THIS.
        </tbody>
    </table>
</script>

用户名
真名
电子邮件
{{{#每个用户}}///请注意。。。
{{username}}
{{firstName}}{{lastName}}
{{email}}
{{/每一个}}/…和这个。
您还需要使用此版本的渲染:

var rendered=template({'users':[{'username':'denman','firstName':'alex','lastName':'mills'}])


因此,用户是在数据中定义的。

谢谢,我从网上偷了一个例子,但这个例子忽略了每个例子。这绝对是在折磨我,前端开发仍然很重要chunks@AlexMills这似乎很好,你的代码肯定有其他问题。谢谢,不,这个JSFiddle在我的Express服务器中不起作用(我尝试了确切的代码),我唯一的猜测是Express没有正确呈现handlebar模板可能会有问题。在过去,我确实成功地使用了EJS模板,但只是经过了一番努力。您的JavaScript对象键中有冒号,
'username:'
应该是
'username'
等等。这是一个很好的捕获,但不幸的是,这也不是问题所在用户的存在,应该被传递,不知道发生了什么。我总是有最坏的运气与模板。我能够让EJS的工作,但现在我被困在车把。这应该很容易。也许提供一个jsfiddle.net链接来准确地向我们展示您当前正在做的事情会有所帮助。