2013-08-26 52 views
1

這塊與模板結合和一個foreach失敗:knockout.js用foreach對象模板失敗

<div data-bind="template: { name: 'tmplA', foreach: { data: items } }"> 
</div> 

<script id="tmplA" type="text/html"> 
    <h1 data-bind="text: text"></h1> 
</script> 

我使用的綁定的JavaScript代碼:

ko.applyBindings(
{ 
    items: 
    [ 
     { 
      text: "A" 
     }, 
     { 
      text: "B" 
     } 
    ] 
}); 

小提琴,顯示錯誤: http://jsfiddle.net/ab3RN/2/

我使用的原因foreach:{data:items}也能夠使用afterAdd,afterRender等。我希望能夠在每次渲染新項目時調用回調函數。

如果我只使用foreach:項目綁定工作沒有問題。

這是一個錯誤還是我做錯了?

回答

1
It works? 

http://jsfiddle.net/ab3RN/3/

你不能用文字像你這樣一個對象包裹。

只是一個側面說明,使用渲染和添加的回調是一個反模式,因爲你從ViewModel獲得了對DOM的依賴關係。使用自定義綁定,而不是

編輯:定製的實例結合 http://jsfiddle.net/2XTSt/

更新 什麼阿德里安想要的是一個字符串模板源 http://jsfiddle.net/2XTSt/1/

+0

好點的反模式。我會考慮這一點,並研究自定義綁定。感謝名單! –

+0

我可否請您告訴我如何添加每次添加項目都會關閉的自定義綁定處理程序? –

+0

什麼是用例? – Anders