2

我在使用jTemplates时遇到了很多困难,但我在 Internet Explorer 7 中使用 {#for} 仍然失败,而它在 Firefox 和 Chrome 中完美运行(未在其他浏览器上测试过)。

我用一个非常简单的测试用例创建了一个jsFiddle,请你告诉我为什么它不适用于 IE7?

$("#result").setTemplate('Test: {$T.test} <br/>N: {#for index = 1 to 10} {$T.index} {#/for}');

$("#result").processTemplate({ "test": 3 });

脚本应该写

Test: 3
N: 1 2 3 4 5 6 7 8 9 10

但在 IE 7 中,我得到了

Test: 3
N:

编辑1:

在 jsFiddle 之外的真实案例中,我总是收到一个 javascript 错误:length null or not an object,这似乎与调用 jQuery get() 的 jTemplates 有关,但是在使用 Firefox/Firebug 进行调试时,我无处可去(它只是工作) ,我无法用 IE 正确调试。


编辑2:

您也可以在开发者网站上在线尝试:http: //jtemplates.tpython.com/在“实时编辑”下使用此示例代码:

$("#result").setTemplate('Test: {$T.version}<br/>Ax: {#for index = 1 to 10} A{$T.index} {#/for}');

$("#result").processTemplate({"version": 4.243});

编辑 3:

无需输入任何代码,用IE7访问jtemplates单元测试即可看到FAIL

谢谢

4

2 回答 2

2

问题已在 0.8.1 版中解决。

于 2012-02-01T17:10:56.440 回答
0

我最终使用了jsRender,根据许多技术博客的说法,这可能是客户端模板的未来。我还发现大多数移动浏览器(包括 Blackberry OS 6)都支持 jsRender。

jsRender 似乎支持 jsTemplates 的所有功能,但主要区别在于 jsRender 返回一个字符串(并且可以在没有 jQuery 的情况下使用)。


我刚刚收到来自 jTemplates 的作者 Tomasz Gloc 的快速错误修复,这将使我重新考虑客户端模板库。这里是:

>

第 707 行:

oper = '{#foreach (function(i){return i;}) as ' + RegExp.$1 + ' begin=' + (RegExp.$2 || 0) + ' end=' + (RegExp.$3 || - 1) + 'step=' + (RegExp.$4 || 1) + 'extData=$T}';

改成:

oper = '{#foreach TemplateUtils.LoopF​​unc=function(i){return i;};TemplateUtils.LoopF​​unc as ' + RegExp.$1 + ' begin=' + (RegExp.$2 || 0) + ' end=' + ( RegExp.$3 || -1) + 'step=' + (RegExp.$4 || 1) + 'extData=$T}';

您也可以回到 0.7.8 版本。

很快我将发布 0.8.1 版本,使用其他解决方案修复错误,但仍需要一些测试。

于 2012-01-30T16:38:50.577 回答