2012-08-16 2 views
0

노출 모듈 패턴을 사용할 때 데이터 바인딩이 녹아웃으로 작동하는 데 문제가 있습니다.녹아웃 및 노출 모듈 패턴의 데이터 바인딩 문제

내 자바 스크립트 내가 제대로 환자 이름 작업을 데이터 바인딩을 얻을 수 없습니다 생각이

var HMS = HMS || {}; 

$(function() { 

    HMS.PatientModel = function() { 
     this.Patient_Name = ko.observable(); 
     this.Patient_Address = ko.observable(); 
    }; 

    HMS.PatientViewModel = function() { 
     var patient = ko.observable(), 
     loadPatient = function() { 
      patient = new HMS.PatientModel(); 
      patient.Patient_Name("Premkumar"); 
     }; 
     return { 
      patient: patient, 
      loadPatient: loadPatient 
     }; 
    }(); 

    HMS.PatientViewModel.loadPatient(); 
    ko.applyBindings(HMS.PatientViewModel); 

}); 

같다. HTML div 태그의 길이는 data-bind="text:patient.Patient_Name"입니다.

jsFiddle http://jsfiddle.net/stprem/pp9ym/1/의 코드를 참조하십시오. 데이터 바인딩에서 내가 뭘 잘못하고 있는지 말해 주시면 감사하겠습니다.

답변

4

loadPatient 함수에서 patient 변수를 새 객체로 바꾸 겠지만 모듈은 이미 원래 관찰 가능에 대한 참조를 반환했습니다. 따라서이 방법으로 업데이트하면 개체가 반환 한 내용이 업데이트되지 않습니다. http://jsfiddle.net/rniemeyer/pp9ym/6/

는 기본적으로, 당신은 관찰로 patient을 유지하고 다음 loadPatient 기능에 업데이트 : 여기

는 옵션입니다. 보기에서 with 바인딩을 사용하면 ko.applyBindings을 호출 한 후로드하려는 경우 개체가 null 인 것을 방지 할 수 있습니다.

+0

Tx 많은 도움을 받았지만 이제는 잘 작동합니다. 나는 당신의 대답의 첫 부분을 이해했다. 그러나 HTML 부분에서 나는 왜 patient.Patient_Name을 사용하여 텍스트를 설정할 수 없는지 명확하지 않다. – Premkumar

+0

바인딩을 적용하기 전에 데이터를로드 할 수 있습니다. 나는 단지'with' 바인딩을 사용하면 빈 관찰 가능 객체에 바인딩하게하고, 나중에 채울 수 있음을 보여주고 싶었습니다. 바인딩을 적용한 후 서버에서 데이터를로드하는 경우에 한 가지 옵션입니다. –