【发布时间】:2012-09-22 01:00:15
【问题描述】:
我正在尝试编写一个函数来加载外部文件中的模板并将它们与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 相关,但它仍然阻止我继续,我将不胜感激。
【问题讨论】:
-
我建议您在这里解释您的问题,而不要求人们为您下载 ZIP 文件。人们对链接保持警惕。
-
除非绝对必要(应该很少),你不应该在 ajax 调用上设置
async: false(你也拼错了 async)。
标签: javascript ajax jsrender