在我的代码中,我想在 KnockoutJSforeach
绑定完成渲染所有项目后执行函数或回调
我知道我可以通过检查我是否在最后一个元素来做到这一点(我发现这里在最后一个项目被渲染后执行代码)。
但是使用这个我的回调函数将在每次呈现新元素或记录时被调用。
我只想执行一次回调函数(为了性能)。
更新
另一个解决方案是在knockout.js 完成渲染所有元素后成功回调。但再次使用这个我的回调函数将在每次呈现新元素时被调用。
在我的代码中,我想在 KnockoutJSforeach
绑定完成渲染所有项目后执行函数或回调
我知道我可以通过检查我是否在最后一个元素来做到这一点(我发现这里在最后一个项目被渲染后执行代码)。
但是使用这个我的回调函数将在每次呈现新元素或记录时被调用。
我只想执行一次回调函数(为了性能)。
更新
另一个解决方案是在knockout.js 完成渲染所有元素后成功回调。但再次使用这个我的回调函数将在每次呈现新元素时被调用。
我认为此类问题的一个很好的解决方案是使用自定义绑定。它会是这样的:
ko.bindingHandlers.doSomething = {
update: function(element, valueAccessor) {
ko.utils.unwrapObservable(valueAccessor()); //grab a dependency to the obs array
//do something based on "element" (the container)
}
}
你会像这样使用它:
<ul data-bind="foreach: items, doSomething: items">
<li>...</li>
</ul>
doSomething
需要获取自己对 的依赖,items
因为foreach
它自己计算的 observable 和 KO 3.0 绑定中的更新将是独立的。doSomething
如果您总是将allBindingsAccessor().foreach
其与foreach
.
这是一个示例,它在每次更改 observbaleArray 时随机化 observableArray 中每个元素的背景颜色:http: //jsfiddle.net/rniemeyer/SCqaS/