你有的第一個例子是無效的。儘管您想創建一個子模板,但它必須位於單獨的腳本標記中。你不能將模板嵌入對方,你必須一個接一個地創建它們。 WRONG:
<script id="superTemplate" type="text/html">
...
<script id="subTemplate" type="text/html">
...
</script>
</script>
RIGHT:
<script id="superTemplate" type="text/html">
...
</script>
<script id="subTemplate" type="text/html">
...
</script>
當應用在UL的子模板,定義了它應該在foreach使用什麼數據,因此你將無法讀取test
,因爲它不是物品。 如果您想要,您可以將其作爲templateOption傳遞,以便它也可以在子模板上使用。
<ul data-bind="template: { name: 'subTemplate', foreach: items, templateOptions: { testValue: 'Value' } }"></ul>
這樣它將在子模板上可用。
<span data-bind="text: $item.testValue"></span>
此外,我不會使用默認的jQuery模板標籤,它與數據綁定更好。
<div id="body" data-bind="template:{name: 'superTemplate'}"></div>
它最終會做同樣的事情,或多或少。你可以看看這裏:http://jsfiddle.net/bwmcR/18/
你能澄清你的問題了一下..你似乎有代碼工作。 – 2011-05-07 12:32:55