2012-07-04 2 views
0

지난 며칠간 Knockoutjs에 관심이 많습니다. MVVM 패턴과 WPF 바인딩을 모델링했기 때문에 매우 유망 해 보였지만 RIA가 아닌 다른 웹 응용 프로그램에 유용 할 때마다 의구심을 품습니다. (그리고 RIA는 브라우저 응용 프로그램에서 복잡한 것을 의미합니다. 어쨌든 ERP라고합시다. 테이블에 행을 추가하고 숨기는 것보다 조금 복잡한 것)KnockoutJS 데이터 오버 헤드 복제

콤보 박스가 10 개이고 클라이언트 측에서 다른 2 개의 항목을 만들어서 저장할 수 있어야한다고 가정 해 보겠습니다. 섬기는 사람.

내가 보는 방식대로 Obs를 사용하여 뷰 모델을 만들어야합니다. 배열은 10 개의 항목으로 미리 채워지고 콤보 박스 안에있는 10 개의 항목을 10 개의 옵션 요소로 렌더링합니다.

기본적으로 2 회 반복하여 항목 컬렉션을 만들고 js viewmodel 및 combobox (옵션)에 항목을 렌더링합니다.

이제 30 개의 컨트롤에 녹아웃 뷰 모델과 미리 채워진 데이터가있는 HTML 컨트롤에 대한 정보가없는 것을 상상해보십시오.

+0

내 대답이 도움이 되었다면 받아 들여주세요 .... 다른 도덕적 문제에 대해 기꺼이 도와 드리겠습니다. –

답변

2

모든 상황이 다르지만 일반적으로 이러한 콤보 상자 옵션을 렌더링하고 넉 아웃보기 모델로 정의해야한다고 생각하지 않습니다. 녹아웃은 옵션 HTML을 작성합니다. 복잡한 오브젝트 그래프에서 이러한 방식으로 채워지는 수많은 콤보 박스가 있습니다. 페이지가 처음로드 될 때 객체 그래프의 초기 상태가 페이지에서 객체 리터럴로 렌더링되어 매핑 플러그 인을 통해 전체 구조를 만드는 최상위 레벨 녹아웃보기 모델 생성자로 전달됩니다 (하위 뷰 모델 만들기 등).). 그런 다음 모든 저장 및 업데이트는 작은 개별 Ajax 조작 및 맵핑 플러그인을 사용한 재 맵핑을 통해 수행됩니다.

+0

Knockout 사이트 (가장 좋은, 가장 잘 문서화되고 소개 된 라이브러리 사이트 중 하나인데, 왜 이런 것들이 모두 같을 수 없습니까?)에는 다양한 HTML 컨트롤 바인딩에 대한 데모가 있습니다. http : // knockoutjs .com/examples/controlTypes.html –

+0

제 맥락에서 knockout의 클라이언트 측 HTML 생성은 여러 메타 데이터를 여러 뷰 모델에 재사용 할 수있게하여 오버 헤드를 크게 줄였습니다. 예를 들어 레퍼런스 조회 데이터를 JSON으로 한번 풀다가 캐시 된 별도의 파일이며 Knockout에서 선택 옵션으로 어쩌면 10 개를 선택합니다. 그런 다음 각보기 모델은 선택한 항목 ID 만 저장합니다. 각 항목을 렌더링 한 페이지가 동일한 항목으로 미리 채워지면 페이지가 무거워집니다. –

+0

보기 모델을 채우는 것에서 볼 수있는 한 가지 문제는 콤보 박스가 페이지가 완전히로드 된 후에 만 ​​옵션이 표시된다는 것입니다. 브라우저가 선택 컨트롤을 렌더링하자 마자 뭔가를 선택할 수 있습니다. – Zapacila