2012-02-16 104 views
17

我一直在寻找一段时间,我很有信心,这是一个新问题,而不是像标题所示的重复。 :)KnockoutJS模板渲染后绑定事件

基本上,我试图找出KnockoutJS在使用类似jQuery模板之类的模板呈现后创建的可订阅事件。

我会使用内置的“afterRender”,但我发现它不会触发,如果可观察数组被清除。我建立了这个演示来说明这个问题:http://jsfiddle.net/farina/YWfV8/1/

此外,我知道我可以写一个自定义处理程序......但这似乎真的不需要我需要什么。

我只想在模板完成渲染后触发一个事件。

回答

29

我的同事实际上是在我回家之前用我们一起玩的东西解决了这个问题。

因此,事件“afterRender”,“afterAdd”和“beforeRemove”的整个“问题”在于它们的作用与“foreach”绑定有所不同。 KnockoutJS很高兴能够告诉你他们的page,但无论出于何种原因,直到我在练习中看到它之前,它才真正沉溺于我。

什么是真正的工作是要打消“的foreach”结合,并使用淘汰赛的本地“数据”绑定这样的:

data-bind="template: { name: 'item-template', data: items, afterRender: caller }" 

然后“AfterRender阶段”的工作原理完全顾名思义。

我的印象是,你无法迭代集合并呈现新的用户界面没有foreach,但这些例子说明它的工作。

我为两个视图模型的样式的例子,因为我有时需要一个或另一个。

感谢您的帮助丹!

+0

不幸的是,由于淘汰赛参考文件断裂,两支笔都被打破了。现在还有一个用于模板绑定的foreach属性。 – Olga 2016-09-02 15:37:10

-1

beforeRemove是你在找什么?我不确定你想要达到什么样的行为。请结帐这个样品:http://jsfiddle.net/romanych/YWfV8/8/ 这是你想要或没有?

+0

beforeRemove实际上并未覆盖它,因为它在模板呈现之前触发。我需要进入模板完成的时刻。 – farina 2012-02-16 18:15:55