模板渲染后KnockoutJS绑定事件

时间:2012-02-16 05:47:49

标签: javascript jquery templates knockout.js knockout-templating

我一直在寻找,我很有信心这是一个新问题,而不是像标题所暗示的那样重复。 :)

基本上,我试图找出KnockoutJS在使用jQuery模板之类的模板渲染后是否创建了可订阅的事件。

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

另外,我知道我可以写一个自定义处理程序......但这似乎对我需要的东西来说真的没用。

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

2 个答案:

答案 0 :(得分:29)

我的同事昨晚在我回家之前使用我们正在玩的东西解决了这个问题。

因此事件“afterRender”,“afterAdd”和“beforeRemove”的整个“问题”是它们与“foreach”绑定一起表现不同。 KnockoutJS很好,可以在他们的page上告诉你,但无论出于什么原因,直到我在实践中看到它,它才真正沉入其中。

真正有用的是废弃整个“foreach”绑定并使用Knockout的本地“数据”绑定如下:

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

然后“afterRender”完全按照顾名思义工作。

我的印象是你无法迭代集合并在没有foreach的情况下呈现新的UI,但这些例子说明它确实有效。

我为两个ViewModel样式做了一个例子,因为我有时需要一个或另一个。

感谢Dan的帮助!!

答案 1 :(得分:-1)

您正在寻找beforeRemove吗?我不确定你想要实现什么样的行为。请查看此示例:http://jsfiddle.net/romanych/YWfV8/8/ 这是你想要的还是没有?