2017-04-04 43 views
1

Knockout JS中是否存在某種類型的變量,用於跟蹤整個DOM中綁定的總數?計算Knockout中綁定的總數

我有一個複雜的應用程序,我想看看我的清理/銷燬代碼是否工作或沒有。因此,在視圖之間點擊並查看綁定的總數將確實有幫助。

回答

0

我不能告訴你是否有開箱即用的方式來做到這一點,但如果沒有,您可以簡單地覆蓋每個綁定處理程序的init函數,以便您例如,將綁定名稱添加到數組。

然後,您可以將init委託給原始處理程序。由於內置的​​綁定處理程序不是太多,因此如果沒有開箱即用的解決方案,這不應該太難以應付。你可以在this fiddle找到一個這樣的工作示例。

基本上每次綁定初始化時,都會將綁定名稱添加到數組中。你可以簡單地增加一個計數器,但這並不會告訴你太多的存在的實際綁定。此外,如果您觀察在提供的小提琴中登錄到控制檯的陣列,您會注意到實際的綁定比您明確創建的要高一些(例如,作爲創建click綁定的副作用,例如,evennt綁定等)。爲此,將實際綁定名稱添加到數組是一個更有說服力的解決方案。

確保你遞減計數器的值時,binding is get rid of。這就是ko.utils.domNodeDisposal.addDisposeCallback(...)所做的。

還要注意腳本被引用的順序。在您想要使用/跟蹤的每個綁定處理程序已導​​入之後,但在創建任何實際綁定之前,此代碼應運行。因此,在最簡單的情況下,導入ko JavaScript文件,然後可能導入所有自定義綁定,然後導入包含此代碼的腳本文件。任何綁定只能在完成後才能應用。

+1

不要忘記返回'originalHandler.init'的值,因爲一些綁定需要返回'{controlsDescendantBindings:true}' – user3297291