在运行时添加淘汰模板会清空HTML DOM
var templateEngine = new ko.nativeTemplateEngine();
templateEngine.addTemplate = function (templateName, templateMarkup) {
document.write("<script type='text/html' id='" + templateName + "'>" + templateMarkup + "<" + "/script>");
};
templateEngine.addTemplate("gridTable","<table></table");
所有早期的内容都是,DOM变为
<html><head><script type="text/html" id="gridView"><table></table></script></head></html>
答案 0 :(得分:1)
正如@nemsev所说,
eveloper.mozilla.org/en-US/docs/Web/API/Document/write:在已关闭(已加载)的文档上调用document.write 会自动调用document.open来清除文档
所以,我修改了我的代码,
var templateEngine = new ko.nativeTemplateEngine();
templateEngine.addTemplate = function (templateName, templateMarkup) {
//document.write("<script type='text/html' id='" + templateName + "'>" + templateMarkup + "<" + "/script>");
var scriptTag = document.createElement("script");
scriptTag.type = "text/html";
scriptTag.id = templateName;
scriptTag.innerHTML = templateMarkup;
var node = document.getElementsByTagName("head")[0];
node.appendChild(scriptTag);
};
templateEngine.addTemplate("gridTable","<table></table");
答案 1 :(得分:0)
我建议你在html结构中创建单独的div,然后在该div中加载模板。例如,您可以使用jquery。
$("#someDiv").append(templateMarkup);