Javascript 使用jQuery.ajax&。text()将模板加载到DOM
我继承了一些我不确定是否完全理解的代码…Javascript 使用jQuery.ajax&。text()将模板加载到DOM,javascript,jquery,ajax,templates,Javascript,Jquery,Ajax,Templates,我继承了一些我不确定是否完全理解的代码… 我们正在构建一个使用微模板的cordova应用程序 这段代码让我有点困惑: this.loadExternalTemplates = function(templateElements, index, callback) { var self = this; if (index >= templateElements.length) { callback(); } e
我们正在构建一个使用微模板的cordova应用程序
这段代码让我有点困惑:
this.loadExternalTemplates = function(templateElements, index, callback) {
var self = this;
if (index >= templateElements.length) {
callback();
} else {
// Load each of the templates into DOM
var $currElement = $(templateElements[index]);
$.ajax({
type : 'GET',
url : $currElement.attr("src"),
dataType : 'text',
timeout : 3000,
success : function(template) {
// Write the template to script tag
$currElement.text(template);
// Iterate / loop to load next template
self.loadExternalTemplates(templateElements, ++index, callback);
},
error : function(error) {
helper.alert("Error occured. Please try again.", error);
}
});
}
};
loadExternalTemplates()函数变量由以下函数调用:
this.onDeviceReady = function() {
var self = this;
// Load all referenced templates
self.loadExternalTemplates($("script[type='text/html']"), 0, function() {
// Initialize the sammy object
self.initSammyBindings();
});
};
在main.html中,我们有如下脚本/模板标记:
<script type="text/html" id="about-template" src="templates/about.tmpl.html"></script>
代码按原样工作(即加载模板),但我没有完全遵循逻辑
我理解如下:
- 带有
的脚本被浏览器忽略/隐藏,因为type=“text/html”
在脚本标记中没有任何意义的“text/html”
- ondevicerady()函数中的调用使用jQuery获取带有
的所有脚本,并将它们加载到loadExternalTemplates()函数(作为templateElements变量)type=“text/html”
- ajax调用使用每个脚本元素的
值通过GET加载内容(html)src
- txt函数用于将html添加到DOM脚本标记中
- 为什么使用jQuery.text(text)方法而不是.html()方法?文本不会去掉html吗?(同样,它起作用了,显然不起作用,但我不完全明白原因)
- 使用jQuery.load()而不是.ajax()不是更有效吗
- 为什么同时将所有模板加载到DOM?这不是违背了拥有模板的目的吗
- 为什么要这样循环(当然每个()都有更好的
或
循环方法)-只是糟糕的编码或我缺少的东西for()
- 是否有更好的(标准的)方法将模板加载到DOM?随需应变