Ric*_*lor 8 javascript knockout.js knockout-components
我有一个使用3.2.0的嵌套KnockoutJS组件的层次结构.它工作得很好但是我希望在加载和渲染整个组件层次结构后执行一些代码.它与afterRender()完全相同,与afterRender相同的常见用例需要.
到目前为止,我尝试了一些方法,但没有运气:
<!--ko template: {afterRender: onLoad.bind($data)} -->
有没有办法在一个完整的knockoutjs组件层次结构被加载和渲染后调用回调?谢谢!
我刚刚遇到这两个线程,所以似乎其他人也在寻找这个.与现有解决方法的关键区别在于它们不适用于嵌套组件.
如果您使用 ko.components 这可能有用:
1)创建一个延迟对象来跟踪每个组件的加载
var statusX = $.Deferred()
var statusY = $.Deferred()
Run Code Online (Sandbox Code Playgroud)
2)通知knockout告诉你组件何时加载并准备好
ko.components.get('x-component', statusX.resolve) //Note: not calling resolve, but passing the function
ko.components.get('y-component', statusY.resolve)
Run Code Online (Sandbox Code Playgroud)
3) 同步两个状态延迟
$.when(statusX.promise(), statusY.promise())
.done( function allComponentsLoaded(componentX, componentY){
//Both components are ready here
//Note the arguments from the function comes via
//ko->jquery deferred resolve
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5420 次 |
| 最近记录: |