在渲染模板时将变量传递给Handlebars

时间:2017-01-12 22:44:29

标签: javascript jquery handlebars.js

有没有办法在渲染时将变量传递给把手模板?我有这个模板:

<script id="listingTopics" type="text/x-handlebars-template">
{{#each this}}
    <div class="wrapper_individual_listing_topic wrapper_form_dark">
        <div class=" form_section">
            <div class="topics_titles wrapper_listing_topics">
                <a href="topic-{{id}}" class="listing-topics">{{title}}</a> <svg class="affinity {{heartClass}}" data-topicid="{{id}}"><use xlink:href="#starEmpty"/></svg>
            </div>

            <div class="topic-description hide topic-{{id}}">
                <p class="text_standard">{{body}}</p>
            </div>
        </div>
    </div>
{{/each}}</script>

我在渲染模板时想要设置的变量是heartclass

我最初的想法是设置一个功能:

function showTopics(container, data, heartclass) {
    var heartClass = heartclass
    var listingTopicsCompiled = listingTopicsTemplate(data);
    $(container).append(listingTopicsCompiled);
}

然后像这样调用函数

showTopics('#listing-topics', not_favorite_exchanges, 'unfav');

不确定如何攻击这个。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我最后只是添加了一个foreach循环并将键值对添加到数组中的每个对象。所以现在是这样的:

function showTopics(container, data, heartclass) {
    data.forEach(function(entry) {
        entry.heartClass = heartclass;
    });
    var heartClass = heartclass
    var listingTopicsCompiled = listingTopicsTemplate(data);
    $(container).html(listingTopicsCompiled);
}

但是,我认为以某种方式访问​​静态变量会更快/更好。