2011-12-28 3 views
4

viewmodel에서 html 요소에 대한 참조가 없어야한다고 생각합니다. 그래서 나는 $ ('id')를 할 수 없다고 생각합니다. dialog() 또는 alert ('message') 또는 window.open()하지 말아야합니다. 그럼 어떻게해야합니까?knockout.js를 사용하여 알림/팝업/창을 표시하는 방법

+2

사용자 정의 바인딩을 사용하여보기 모델에서 jQuery UI 대화 상자를 제어하는 ​​샘플에 대해이 대답을 살펴보십시오. http://stackoverflow.com/questions/8611327/integrating-jquery-ui-dialog-with-knockoutjs/8611892#8611892. observable을 true로 설정하면 대화 상자가 열리고 false로 설정하면 닫힙니다. –

+0

이것은 완벽합니다. 감사. –

답변

8

사용자 정의 바인딩을 사용하여보기 모델에서 jQuery UI 대화 상자를 제어하는 ​​샘플에 대해이 대답을 살펴보십시오. 사실에 대한 관찰을 설정

integrating jquery ui dialog with knockoutjs

허위가 닫을으로 설정 대화 상자를 엽니 다.

+0

좋아, 당신은 2 upvotes 받아 받아 :) 이미 upvoted 원래 대답. –

1

실제로 대화 상자를 사용하면 아무런 노력이 없습니다. Knockout이 바인딩되도록하고 데이터는 대화 상자 요소에 포함됩니다. 내 응용 프로그램에서 대화 상자가 열려 있거나없는 경우 효과가 없습니다. 녹아웃은 여전히 ​​값을 업데이트합니다.

하나의 고려 사항이지만 논리적 섹션에서 제 바인딩을 수행합니다. 그래서 ko.applybindings를 페이지의 본문과 대화 상자에 두 번 호출하여 따로 적용 해 보겠습니다.

알림과 관련하여 표시 할 텍스트를 전달해야합니다. 그래서 여기서 녹아웃을 사용하려면 녹아웃으로 숨겨진 요소를 업데이트해야합니다. 그런 다음 경고에 표시 할 결과 값을 얻으십시오.

window.open의 경우 사용자의 우려 사항을 잘 모릅니다. 내가 이해하는 한, 그것은 새로운 페이지로가는 것과 같습니다. 그래서 그 페이지의 논리가 채워지게됩니다.

+0

예 녹아웃이 숨겨진 대화 상자에서 값을 채우는 것을 알고 있습니다. 그런 대화 상자를 보여주는 방법은? –

+0

내 viewmodel에 로직 만 있고 UI에 대한 참조가 없으면 좋겠다. C#으로 작성된 Unit Tests에서 비즈니스 로직 클래스를 테스트 할 수있는 것처럼 UI와는 독립적으로 테스트 할 수 있습니다. 나는 수업이 창문을 열거 나 내가 생각하는 경고를 보여줄지 시험 할 수 없다. –

관련 문제