gpt4 book ai didi

javascript - 通过 AJAX 加载 jsrender 模板时出错

转载 作者:行者123 更新时间:2023-11-29 22:20:50 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来加载外部文件中的模板,并将它们与 jsrender 一起使用。但是,我收到此错误:

TypeError: elem.getAttribute is not a function
[Break On This Error]

value = $templates[elem.getAttribute(tmplAttr)];

我有一些 console.logs 显示模板是用 ajax 检索的。

导致错误的基本代码如下:

var path    = 'templates/myTemplate.tmpl.html';
var data = searchResultTeasers;
var target = $('#results');

$.ajax({
url : path,
aysnc : false,
success : function(template) {

console.log("Path", path);
console.log("Template", template);
console.log("Data", data);

//=============================================
// Save Template with url as name for future
//=============================================
$.templates(path, template);

//=============================================
// Get Template String
//=============================================
var templateString = $.templates(path);

//=============================================
// Render Template
//=============================================
renderedTemplate = templateString.render(data);

target.html(renderedTemplate);
}
});

错误在 jsrender.js(第 829 行)中,我认为它与 $.templates(path); 有关但我不明白哪里出了问题。

这是项目压缩包的链接: http://sdrv.ms/QsZpQT

我的功能基于这篇文章: http://msdn.microsoft.com/en-us/magazine/hh975379.aspx

我不确定这是否与 jsRender 相关,但它仍然阻止我继续,我将不胜感激任何帮助。

最佳答案

所以我自己也遇到了同样的错误(当尝试将外部模板与 jsrender 一起使用时,需要加载本地文件(也就是说,我没有使用任何服务器端代码))。

不幸的是,您链接到的 MSDN 文章(我最初去了,然后才偶然发现这篇文章)和对 Store a jsRender template in a separate js file 的接受答案, 两者都建议使用 $.get(),但是您必须同时为异步参数和 dataType 参数使用 $.ajax(),如下所述.

这是我如何让它工作的:

  1. 使用了 $.ajax()async: false(您在上面的示例中使用过,只是您将“async”拼错为“aysnc”)。<
  2. dataType: 'text' 参数设置为 ajax 调用。这部分是关键——当我省略 dataType 参数时,模板内容作为 [object XMLDocument] 返回,$.templates 被阻塞了。

所以最终有效的代码片段如下所示:

var file = 'views/my_template_file.html';
$.ajax({
url: file,
async: false,
dataType: 'text',
success: function(contents) {
$.templates({my_template: contents});
$('#myDiv').html(
$.render.my_template()
);
}
});

希望这对其他人有帮助。

关于javascript - 通过 AJAX 加载 jsrender 模板时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com