2017-04-04 8 views
1

전체 DOM에서 바인딩의 총 수를 추적하는 Knockout JS에 어떤 종류의 변수가 있습니까?넉 아웃의 총 바인딩 수

복잡한 애플리케이션이 있는데 정리/삭제 코드가 작업인지 아닌지 확인하고 싶습니다. 따라서 뷰 사이를 클릭하고 총 바인딩 수를 확인하면 도움이됩니다.

답변

0

기본 제공되는 방법이 있는지 여부를 알 수는 없지만 그렇지 않은 경우 각 바인딩 처리기의 init 함수를 덮어 쓸 수 있습니다. 배열에 바인딩 이름을 추가하십시오.

그런 다음 init을 원래 처리기에 위임 할 수 있습니다. 너무 많은 바인딩 핸들러가 내장되어 있지 않으므로 즉시 사용 가능한 솔루션이없는 경우에는 너무 많은 작업을 수행해서는 안됩니다. 이 작업 예제는 this fiddle에서 찾을 수 있습니다.

기본적으로 바인딩을 초기화 할 때마다 바인딩 이름을 배열에 추가합니다. 단순히 카운터도 증가시킬 수는 있지만 실제로 존재하는 바인딩이 무엇인지에 대해서는 너무 많이 알려주지 않습니다. 또한 제공된 바이올린에서 콘솔에 기록되는 배열을 관찰하면 실제 바인딩이 명시 적으로 만드는 것보다 약간 더 높음을 알 수 있습니다 (예 : 바인딩을 click 바인딩을 만드는 부작용으로 사용). , 등). 이를 위해 실제 바인딩 이름을 배열에 추가하는 것이 좀 더 해결책입니다.

binding is get rid of 일 때 카운터의 값을 감소시켜야합니다. 이것이 ko.utils.domNodeDisposal.addDisposeCallback(...)의 기능입니다.

또한 스크립트가 참조되는 순서에주의하십시오. 이 코드는 각 바인딩 바인딩 핸들러를 사용하고/추적하고 싶을 때 을 실행해야합니다. 실제로 바인딩이 생성되기 전에이 생성됩니다. 따라서 가장 간단한 경우 ko JavaScript 파일을 가져온 다음 모든 사용자 정의 바인딩을 가져온 다음이 코드가 포함 된 스크립트 파일을 가져옵니다. 바인딩이 완료되면 모든 바인딩을 적용해야합니다.

+1

일부 바인딩은'{controlsDescendantBindings : true}'를 반환해야하기 때문에'originalHandler.init'의 값을 반환하는 것을 잊지 마십시오. – user3297291