模板渲染后KnockoutJS绑定事件
我一直在寻找,我很有信心这是一个新问题,而不是像标题所暗示的重复。 🙂
基本上,我正在尝试找出KnockoutJS在使用jQuery模板之类的模板渲染后创建的可订阅事件。
我会使用内置的“afterRender”,但我发现如果清除了可观察数组,它就不会触发。 我构建了这个演示来说明这个问题: http : //jsfiddle.net/farina/YWfV8/1/ 。
另外,我知道我可以写一个自定义处理程序……但这对我需要的东西来说似乎没必要。
我只想在模板完成渲染后触发一个事件。
我的同事昨晚在我回家之前使用我们正在玩的东西解决了这个问题。
因此事件“afterRender”,“afterAdd”和“beforeRemove”的整个“问题”是它们与“foreach”绑定一起表现不同。 KnockoutJS非常好,可以在他们的页面上告诉你这个,但无论出于何种原因它直到我在实践中看到它才真正沉入其中。
真正有效的是废弃整个“foreach”绑定并使用Knockout的本地“数据”绑定,如下所示:
data-bind="template: { name: 'item-template', data: items, afterRender: caller }"
然后“afterRender”完全按照顾名思义工作。
我的印象是你无法迭代集合并在没有foreach的情况下渲染新UI,但这些例子说明它确实有用。
-
http://jsfiddle.net/farina/kuFx2/1/ (使用对象数组样式ViewModel)
-
http://jsfiddle.net/farina/QtZm2/1/ (使用函数样式ViewModel)
我为两个ViewModel样式做了一个例子,因为我有时需要一个或另一个。
谢谢Dan的帮助!!
beforeRemove
是您正在寻找的吗? 我不确定你想要达到什么样的行为。 请查看此示例: http : //jsfiddle.net/romanych/YWfV8/8/这是你想要的吗?