2014-03-19 2 views
0

knockout을 사용하는 기존 코드를 수정하고 있는데 어떻게 작동하는지 잘 모르겠지만 일부 테스트 후에 데이터 바인딩이 datepicker에서만 작동하는 것처럼 보입니다. 하루가 선택되었을 때. 나는 daypicker showButtonPanel에서 "완료"버튼을 클릭하면 요일을 숨기고 바인딩하려고합니다.datepicker 값의 숨겨진 날짜가 더 이상 전달되지 않습니다. (Knockout)

아무도 도와 줄 수 있습니까? 여기

내가 완전히 내 솔루션을 이해하지 못하는 내 모델

var viewModel = function(previousaddress){ 
var self = this; 
var action; 
var id; 

self.PREVIOUS_ADDRESS=ko.observable(''); 
self.PREVIOUS_POSTCODE=ko.observable(''); 
self.FROM_DATE=ko.observable(); 
self.TO_DATE=ko.observable(); 
self.addresses=ko.observableArray(previousaddress); 

self.addPreviousAddress = function(formElement) { 
    var newPreviousAddress = new PreviousAddress(     
     self.PREVIOUS_ADDRESS(), 
     self.PREVIOUS_POSTCODE(), 
     self.FROM_DATE(), 
     self.TO_DATE() 
    ); 

    var validate_function; 
    if(self.action == 'new'){ 
     validate_function = function(data){ 
      data = $.parseJSON(data); 
      if(data){   
       newPreviousAddress.ID = data.insert_id;             
       self.addresses.push(newPreviousAddress); 
      }else{ 
       //error 
      } 
     }; 
    }else if(self.action == 'update'){ 
     newPreviousAddress.ID = self.id; 
     validate_function = function(data){ 
      data = $.parseJSON(data); 
      if(data){ 
       newPreviousAddress.ID = data.update_id; 
       self.addresses.remove(function(item) {return item.ID == data.update_id}); 
       self.addresses.push(newPreviousAddress); 
      }else{ 
       //error 
      } 
     }; 
    } 

    validate(newPreviousAddress, validate_function, 'previous-address-add', self.action); 

    $('#myModal').modal('hide'); 
    self.PREVIOUS_ADDRESS(''); 
    self.PREVIOUS_POSTCODE(''); 
    self.FROM_DATE(); 
    self.TO_DATE(); 

}; 

self.updateAction = function(){ 
    self.action = 'new'; 
}; 

self.editPreviousAddress = function (care) { 
self.action = 'update'; 
self.id = care.ID; 
    $('#myModal').modal('show'); 
self.PREVIOUS_ADDRESS(care.PREVIOUS_ADDRESS); 
self.PREVIOUS_POSTCODE(care.PREVIOUS_POSTCODE); 
self.FROM_DATE(care.FROM_DATE); 
self.TO_DATE(care.TO_DATE); 
}; 
}; 
+1

를/focusout 이벤트를 사용하여 모델을 업데이트 할 수 있습니까? –

+0

$ (this) .change()도 작동합니다. 요소에는 .datepicker 클래스가 있어야하며, 그 밖의 요소는이를 손상시킵니다. – liamfriel

답변

0

하지만 여기있다 :

내가 녹아웃 코드를 변경하지 : 흐림을 사용

$('.datepicker').datepicker({ //the elements MUST have the class 'datepicker' 
    changeMonth: true, 
    changeYear: true, 
    maxDate: '-4Y', 
    yearRange: "1900:<?php echo date('Y'); ?>", //for selecting from 1900 to now 
    dateFormat: 'mm/yy', 
    showButtonPanel: true, 

    onClose: function(dateText, inst){ 
     var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val(); 
     var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val(); 
     $(this).datepicker('setDate', new Date(year, month, 1)); 
     $(this).change(); //this seems to update the model 
    },  
}); 
관련 문제