0
的HTML腳本標籤可以用來定義命名模板:爲什麼src不能用於模板?
<script type="text/html" id="Lookup">
<label class="field-title" data-bind="text: Metadata.FieldTitle, css: { hasError: !IsValid() }"></label>
<div data-bind="html: Metadata.FieldIntro"></div>
<select class="form-control" data-bind="attr: { id: 'ff' + Metadata.FormFieldID }, options: Lookup, optionsText: 'Caption', optionsValue: 'Id', optionsCaption: Metadata.FieldIntro || 'Select an item...', value: Value, css: { hasError: !IsValid() }"></select>
</script>
根據MDN和MSDN,我應該能夠模板的內容移動到一個文件中,並像這樣引用它:
<script type="text/html" id="Lookup" src="Lookup.html"></script>
根據提琴手模板文件正在加載(我有幾個)。什麼停止淘汰使用模板,當他們不內聯,有什麼可以做的呢?
從註釋中,腳本標記不解析它們加載到DOM中的內容。我可以使用jQuery ajax來加載,分析和注入,但敲除使用腳本節點的id來引用模板,所以接下來的問題是如何使得可見的片段如此加載。
在刺我猜測,我需要做的是這樣的:
$(document.body)
.append("<div id='Lookup' style='display:none'></div>")
.load("Templates/Lookup.html");
關閉,但沒有雪茄。這是糾正和結束了作爲一個功能:
function loadTemplate(name) {
if (name)
switch (name.constructor) {
case String:
$(document.body).append("<div id='" + name + "' style='display:none'></div>");
$("#" + name).load("Templates/" + name + ".html");
break;
case Array:
name.map(loadTemplate);
break;
default:
throw "Must be a string or an array of strings";
}
}
你可以通過一個單一的模板名稱或名稱的數組。 淘汰賽愉快地使用模板。
那麼,這回答了「爲什麼」的問題。我可以加載文件並使用jQuery ajax之類的東西注入它,但是如何命名模板呢? –
更改解析腳本元素以獲取數據的任何代碼會更有意義。不使用腳本元素來提供該腳本的URL會更有意義。 – Quentin