2015-03-25 19 views
0

在運行時添加淘汰賽模板清空HTML DOM在運行時添加淘汰賽模板清空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> 
+2

https://developer.mozilla.org/en-US/docs/Web/API/Document/write:在關閉的(加載的)文檔上調用'document.write' **會自動調用'document.open',它將清除文件** – nemesv 2015-03-25 07:44:20

回答

0

我會建議你創建在您的html結構中分隔div,然後在該div中加載模板。例如,你可以使用jQuery來做它。

$("#someDiv").append(templateMarkup); 
1

正如@nemsev說,

eveloper.mozilla.org/en-US/docs/Web/API/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");