我有几个在所有页面上都使用的jsRender模板。与其使用script标签方法,不如预编译它们并将结果函数放在外部js文件中。

我看到一个previous question询问此问题,但是所描述的方法似乎不再有效,或者我做错了什么。

我从控制台中调用了$ .templates(“#myTemplate”),msanjay建议并复制/重命名了该匿名函数,并得到了类似的内容(这对我未经训练的人来说有点奇怪):

function myTemplate(data, view, j, b, u) {
    var j = j || jQuery.views, h = j.converters.html, ret; try {

        return "<div...";

    } catch (e) { return j._err(e); }
}


如果然后我尝试通过调用var html = $ .render(data,myTemplate);使用此模板,我收到一个错误:

未捕获的TypeError:对象函数(a,b)的属性“ render” {返回新的p.fn.init(a,b,c)}不是函数

不知道jsRender是否已更改,这不再可能,或者我做错了什么,但是任何指导将不胜感激。

最佳答案

上次更新有很多API更改。看起来$.render现在只是empty object

查看此页面Provide a tool for pre-compiling templates,您将找到此演示:JsRender: Variants and Details

例如,您可以尝试以下操作:

var movies = [
    { name: "The Red Violin", releaseYear: "1998" },
    { name: "Eyes Wide Shut", releaseYear: "1999" },
    { name: "The Inheritance", releaseYear: "1976" }
];

var myTemplate = $.templates( "<div>{{:#index+1}}: <b>{{>name}}</b> ({{>releaseYear}})</div>" );
$("#movieList").html(myTemplate.render( movies));


演示:http://jsfiddle.net/76nMC/

关于javascript - 预编译jsrender模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13103131/

10-09 05:38