2012-04-02 1 views
0

observableArray에 데이터 목록이 있는데 자바 스크립트 대화 상자 창에 표시하려고합니다 (중요한 경우 jQuery.blockUI를 사용하고 있습니다). 불행히도 대화 상자는 페이지가로드 된 후 언 바운드 된 것처럼 보입니다. 대화 상자가 올바르게 초기화되지만 (데이터가 표시됨) 변경 사항으로 업데이트되지 않습니다.Knockout을 사용하여 자바 스크립트 대화 상자를 바인딩하는 방법은 무엇입니까?

자바 스크립트 오류가 없으며 대화 상자가 생성되어 문서에 추가 된 후 (효과 없음) 바인딩을 이동했습니다. 대화 상자를 구성하는 주 div에 ko.applyBinding을 호출 해 보았습니다. 그러나 어떤 이유 때문에 주 페이지의 일부가 숨겨집니다 (DOM은 있지만 숨겨져 있습니다).

편집 : 문제를 재현하는 jsfiddle에 프로젝트를 만들었습니다. 주요 원인은 div에 대화 상자의 내용을 래핑하는 것 같습니다. 직접 컨텐트를 보여 주면 제대로 작동하는 것 같습니다 (물론 래퍼는 대화 상자에 공통적 인 스타일을 제공합니다).

나는 독감으로부터 회복되고 있고, 명백한 것을 쉽게 놓칠 수 있었지만, 하루 종일 노력했지만 아무 것도 나에게 오지 않았습니다. 어떤 아이디어?

+0

당신이 예 jsfiddle을 게시 할 수 있을까요? – Tuan

+0

jsFiddle에서 재현 할 수 없었지만 대화 상자와 관련이 있다고 판단 할 수있었습니다 (아마도 내가하고있는 일이나 blockUI가 아닐지라도). 내가 더 나은 대답을하면 다시보고 할게. – Brian

답변

2

문제는 대화 상자가 ($(document).append()을 호출 했음에도 불구하고) DOM에 존재하지 않는다는 것입니다. div를 문서의 자식으로 추가 할 수는 없습니다. 대신 대화 상자를 본문에 추가하고 숨 깁니다.

$dlg = $('<div></div>').hide(); 
$('body').append($dlg); 

여기 작품 :http://jsfiddle.net/yL6ds/4/

+0

D' OH! 그냥 어리석은 실수. :) 감사. 이것에 관해 8 시간의 대부분을 낭비했다, grrr. 대화 코드는 1 년 넘게 프로덕션에서 (Knockout으로 처음으로) 작업을 해왔고, jsFiddle에서 재현 한 재미있는 것을 보지 못했습니다. – Brian

관련 문제