바인딩 인 경우 knockoutjs에 문제가 있습니다. 바인딩을 아주 자유롭게 사용하기 때문에 바인딩없이 오류없이 하위 속성을 참조 할 수 있습니다.바인딩과 스크립트의 경우 녹아웃 js
if 바인딩으로 추가 된 DOM 요소에 이벤트 처리기 등을 등록하는 것이 하나의 원인입니다. 기본적으로 if 바인딩에 의해 추가 된 요소가 DOM에 추가 될 때 콜백을 가져와야합니다. 나는 livequery jquery 플러그인을 사용하여 시도했지만 요소가 두 번 추가되는 것처럼 보입니다. 이것을 보여주기 위해 몇 가지 예제 코드를 생각해 냈습니다.
녹아웃 문서 명확하게 상태 :
". 바인딩 경우, 그러나, 물리적으로 추가하거나 DOM에 포함 된 마크 업을 제거하고 표현식이 true 인 경우에만 후손에 바인딩을 적용" 다음 코드 그러나
http://knockoutjs.com/documentation/if-binding.html
는 인라인 스크립트에서 경고가 실행됩니다
JS :
이var vm = {
val: ko.observable(false),
someText: ko.observable("some text"),
};
ko.applyBindings(vm, document.getElementById("d1")
HTML :
<div id="d1" data-bind="if: val">
<span data-bind="text: someText"></span>
<script>alert("here")</script>
</div>
그래서 나는 여기서 무슨 일이 벌어지고 있는지 생각해 봅니다. 먼저 HTML이 DOM에 추가됩니다. if 바인딩이 거짓이면 자손 HTML이 제거됩니다. if 바인딩이 다시 true가되면 HTML이 다시 추가됩니다. 이것이 내가 라이브 조회 콜백에 두 가지 트리거를 보는 이유라고 생각합니다. – mcot