【发布时间】:2015-01-25 06:21:33
【问题描述】:
我有一个使用 3.2.0 的嵌套 KnockoutJS 组件的层次结构。它工作得很好,但我希望在加载和渲染整个组件层次结构后执行一些代码。它大致相当于 afterRender(),需要用于与 afterRender 相同的常见用例。
我已经尝试了一些方法,但到目前为止都没有运气:
- 在根模板中添加了以下内容,但在加载嵌套组件之前调用它,为时过早。
<!--ko template: {afterRender: onLoad.bind($data)} --> - 使用最新的 3.3.0-alpha 并在所有组件上指定 synchronous:true。但我相信,由于我使用的是 AMD,组件仍然是异步“加载”的,这意味着仅仅因为我的根 applyBindings() 返回,并不意味着所有组件都已加载和渲染。
- 甚至尝试构建延迟对象的集合,这些延迟对象仅在加载相应组件时才被解析。这变得过于复杂,但由于我不会详细介绍的原因仍然无法正常工作。
有没有办法在加载和渲染完整的 knockoutjs 组件层次结构后调用回调?谢谢!
我刚刚遇到这两个线程,所以似乎其他人也在寻找这个。与现有解决方法的主要区别在于它们不适用于嵌套组件。
【问题讨论】:
-
只是好奇,如果您为每个组件回显“xx 之前”和“xx 之后”,console.log 会是什么样子?尽管“之后”不能正常工作,嵌套组件可能会正确触发 before/etc 事件?这可用于手动跟踪流程何时完成。
-
你试过这个... data: dataItems 将替换 foreach data-bind="template: { name: 'template-name', data: dataItems, afterRender: callbackmethod}"
标签: javascript knockout.js knockout-components