从JsRender调用JavaScript函数

cp1*_*100 11 javascript jquery jsrender

我有一个JsRender模板.当模板渲染时,我想调用JavaScript函数来操作一些数据.

这是我的JsRender模板.

<tr class="template-download">
   <td class="size">
        <span>{{:size}}</span>
   </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

现在我想将:size值传递给JavaScript函数并获取返回值.所以我可以显示返回值而不是:size值.

我的JavaScript功能是

function getSize(size) {
    var megabytes = size / (1024 * 1024);
    return megabytes.toFixed(2) + "MB";
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Tim*_*m A 18

您可以使用辅助函数来完成此操作.调用render时,可以定义辅助函数并将其传递到模板中:

$("#tmpl").render(data, {
    getSize: function(size) {
        var megabytes = size / (1024 * 1024);
        return megabytes.toFixed(2) + "MB";
    }
});
Run Code Online (Sandbox Code Playgroud)

然后,在您的模板中,您可以像这样调用辅助函数:

<tr class="template-download">
   <td class="size">
        <span>{{:size}} {{:~getSize(size)}} </span>
   </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

我对你的模板的使用方式做了一些假设,但这应该让你顺利.

本文有一个与辅助函数相关的部分,@ BorisMoore在他的jsViews站点上有很多很好的例子.