Handlebars.js中,'each'函数内变量未定义

5

我有一个渲染函数:

renderTracksList = function(tracks){
    var source   = $("#timeline-template").html();
    var template = Handlebars.compile(source);
    var data     = {
                    tracks: tracks, 
                    client_id: App.config.client_id
                };

    var html     = template(data);

    $('#timeline').html(html);
}

在我的模板中,我尝试在循环内部使用打印client_id,但在循环上下文中它是未定义的,那么如何访问和打印变量?

{{#each tracks}}
<div class="track">
    {{title}} - 
    <a href="javascript:App.play('{{permalink_url}}')">PLAY</a>
    {{#if downloadable}}
    - <a href="{{download_url}}?client_id={{client_id}}" target="_blank">DOWNLOAD</a>
    {{/if}}
</div>
{{/each}}

顺便说一下,我已经尝试过这个:

<a href="{{download_url}}?client_id={{../client_id}}" target="_blank">DOWNLOAD</a>
1个回答

11
尝试在{{#if}}{{#each}}中都重复使用../
<a href="{{download_url}}?client_id={{../../client_id}}" target="_blank">DOWNLOAD</a>

即使{{#if}}保留了先前上下文的值,但它仍会在堆栈中创建另一个条目,../将通过它向后跳跃。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接