如何将帮助器添加到`underscorejs`模板?

时间:2014-09-10 05:18:21

标签: javascript jquery underscore.js underscore.js-templating

我正在尝试将帮助函数添加到我的underscore模板中。但我无法做到这一点。任何人都可以请你纠正我?

这是我的tempalate:

<script type="text/template" id="table">
    <table>
        <tbody>
            <tr>
                <% _.each(obj.titles, function(item){ %>
                    <td><%= item.label %>
                <% }); %>
            </tr>
        </tbody>
    </table>
</script>

这是我的js:

var viewHelper = {
    getProperty: function(propertyName) {
        console.log('getProperty ' + propertyName);
        return propertyName;
    }
};

var obj = {
    "titles" : [
            {"label" : "-----Totals for Month----   "},
            {"label":"-----Previous Year-----"}
    ]
};

var template = _.template($('#table').html());

var html =  _.extend(obj, viewHelper);

$('body').html(template(html));

但是我根本无法调用我的帮助函数。

请更新我的小提琴;

fiddle

1 个答案:

答案 0 :(得分:1)

它适用于您的代码。您只需在模板中使用该功能:

<script type="text/template" id="table">
    <table>
        <tbody>
            <tr>
                <% _.each(obj.titles, function(item){ %>
                    <td><%= item.label %></td>
                <% }); %>
            </tr>
             <tr>
                <% _.each(obj.titles, function(item){ %>
                    <td><%= getProperty(item.label) %></td>
                <% }); %>
            </tr>
        </tbody>
    </table>
 </script>

这是一个有效的傻瓜:http://plnkr.co/edit/akeiPbQoZBjzgBsEykTi?p=preview