2013-08-26 56 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