Knockout JS中是否有某种变量可以跟踪整个DOM中的绑定总数?
我有一个复杂的应用程序,我想看看我的清理/破坏代码是否能完成它的工作。因此,在视图之间单击并查看绑定总数确实会有所帮助。
答案 0 :(得分:0)
我不能告诉你是否有开箱即用的方法,但如果没有,你可以简单地覆盖每个绑定处理程序的init
函数例如,您可以将绑定名称添加到数组中。
然后您可以将init
委托给原始处理程序。由于内置的绑定处理程序太多,如果没有开箱即用的解决方案,这不应该太难以应付。您可以在this fiddle中找到相关的工作示例。
基本上每次初始化绑定时,都会将绑定名称添加到数组中。你也可以简单地增加一个计数器,但这并不能告诉你太多关于存在什么样的实际绑定。此外,如果您观察到所提供的小提琴中的数组被记录到控制台,您会注意到实际绑定比您明确创建的更高(例如,evennt
绑定作为一方创建click
绑定等的效果。为此,将实际绑定名称添加到数组是一个更有说服力的解决方案。
确保在binding is get rid of时递减计数器的值。这就是ko.utils.domNodeDisposal.addDisposeCallback(...)
的作用。
还要注意脚本的引用顺序。在您想要使用/跟踪的每个绑定处理程序已导入但在创建任何实际绑定之前之后,此代码应运行。因此,在最简单的情况下,导入ko JavaScript文件,然后可能导入所有自定义绑定,然后导入包含此代码的脚本文件。任何绑定只应在完成后才能应用。