2011-04-23 107 views
3

我試圖嵌套一些jQuery模板。我知道jQuery有我可以使用的{{tmp語法,但是這對我來說不起作用,因爲我需要使用淘汰賽的foreach模板。正如你在下面看到的,我有一個綁定到第一個腳本標籤的div。這是我的第一個模板,使用knockout的foreach語法來遍歷可觀察的消息數組。在那個模板裏面,我試圖把另一個div綁定到另一個使用knockout的foreach循環遍歷'messages'數組中每個成員的數組的模板。它不工作。我得到的JavaScript錯誤(如「預期的標識符」)。任何想法我做錯了什麼?巢淘汰賽foreach模板

 <div data-bind="template: {name: 'contactIMSTemplateContent', foreach:messages}"></div> 
<script id="contactIMSTemplate" type="text/html"> 
    <span class="tabTop">${viewModel.contacts()[$data.contact].name()}</span> 
</script> 
      <script id="contactIMSTemplateContent" type="text/html"> 
    <div class="tabContentIM" > 
    <div data-bind="template: {name:'IMSTemplate', foreach:${viewModel.messages()[$data.contact].ims}}" ></div> 

    </div> 
      </script> 
<script id="IMSTemplate" type="text/html"> 

     <div class="message"><span class="messageFrom">${viewModel.contacts()[0].name()}</span> ${$data}</div> 
</script> 

我的視圖模型看起來像:

var viewModel = { 
    contacts: ko.observableArray([new contact("Contact Name", "contact status", "busy", "[email protected]", "url")]), 
    messages: ko.observableArray([{ 
     contact: 0, 
     ims: new ko.observableArray(["chat"]) 
    }]) 
}; 
+0

你可以發佈你的viewModel的樣子嗎? – 2011-04-23 21:10:06

+0

哎呀,忘了。在這裏: VAR視圖模型= {聯繫人:ko.observableArray([新聯繫人( 「聯繫人姓名」, 「聯繫人狀態」, 「忙碌」, 「[email protected]」, 「URL」)),\t消息:KO .observableArray([{contact:0,ims:new ko.observableArray([「chat」])}]) \t};如果可能的話, – 2011-04-23 21:17:40

+0

可能會編輯問題並添加它。 – 2011-04-23 21:20:31

回答

6

我不知道您的視圖模型看起來完全像什麼,但此行會導致一個問題:

<div data-bind="template: {name:'IMSTemplate', foreach:${viewModel.messages()[$data.contact].ims}}" ></div>

裏面的數據綁定,你可以直接使用變量,不需要使用${語法。此外,在屬性的末尾有一個}},這將導致jQuery模板插件嘗試將其解析爲標籤。如果您需要在數據綁定中放置兩個大括號,則只需在它們之間放置一個空格即可使用。

+0

感謝一堆!沒有意識到我不需要$ {。剛剛爲我節省了幾個小時毫無意義的調整。謝謝! – 2011-04-23 21:23:52