计算Knockout中绑定的总数

时间:2017-04-04 11:34:34

标签: knockout.js knockout-3.0

Knockout JS中是否有某种变量可以跟踪整个DOM中的绑定总数?

我有一个复杂的应用程序,我想看看我的清理/破坏代码是否能完成它的工作。因此,在视图之间单击并查看绑定总数确实会有所帮助。

1 个答案:

答案 0 :(得分:0)

我不能告诉你是否有开箱即用的方法,但如果没有,你可以简单地覆盖每个绑定处理程序的init函数例如,您可以将绑定名称添加到数组中。

然后您可以将init委托给原始处理程序。由于内置的​​绑定处理程序太多,如果没有开箱即用的解决方案,这不应该太难以应付。您可以在this fiddle中找到相关的工作示例。

基本上每次初始化绑定时,都会将绑定名称添加到数组中。你也可以简单地增加一个计数器,但这并不能告诉你太多关于存在什么样的实际绑定。此外,如果您观察到所提供的小提琴中的数组被记录到控制台,您会注意到实际绑定比您明确创建的更高(例如,evennt绑定作为一方创建click绑定等的效果。为此,将实际绑定名称添加到数组是一个更有说服力的解决方案。

确保在binding is get rid of时递减计数器的值。这就是ko.utils.domNodeDisposal.addDisposeCallback(...)的作用。

还要注意脚本的引用顺序。在您想要使用/跟踪的每个绑定处理程序已导​​入但在创建任何实际绑定之前之后,此代码应运行。因此,在最简单的情况下,导入ko JavaScript文件,然后可能导入所有自定义绑定,然后导入包含此代码的脚本文件。任何绑定只应在完成后才能应用。