2012-02-21 10 views
1

내가 같이 사용자 정의 데이터 바인딩이에 DOM 요소에 데이터 바인딩 적용 :사용자 정의 데이터 바인딩

ko.bindingHandlers.calendar = { 
      init: function(element, valueAccessor) { 
       var value = valueAccessor() || {};    
       var calType = $('<select style=""><option value="gregorian">Miladi</option><option value="islamic">Hicri</option><option value="rumi">Rumi</option></select>');                

       // Need to something to apply this binding for the calType variable 
       calType['attr']('data-bind', 'chosen : true'); 

       .... 
       .... 

       $(element).before(calType); 
      } 
}; 

ko.bindingHandlers.chosen = { 
       init: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
        $(element).chosen(); 
       }, 
       update: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
        $(element).trigger("liszt:updated"); 
       } 
}; 

내가 바인딩 달력 내부에 동적으로 생성 된 DOM 요소에 바인딩을 선택 적용 할. 이 방법이 있습니까?

+0

매우 복잡합니다 ... 이걸 꼭 사용해야할까요? ...? – Madman

+0

나는 당신에게 어떤 생각이 있어도 그것을 할 수 있는가? – Luffy

+0

사전에 필요한 모든 요소를 ​​만들고 VM의 일부 조건부 속성에 매핑 한 다음 사용자 정의 바인더에서 작업을 수행하거나 ko가 처리하도록 할 수도 있습니다. 자세한 내용을 작성하거나보다 일반적인 질문을하면 문제 해결 방법을 찾을 수있는 또 다른 방법을 찾을 수 있습니다. – Madman

답변

2

"ko.applyBindings (viewModel);"이라고 불러야합니다. 동적으로 생성 된 DOM 요소가 생성 된 후

+0

안녕하세요, 귀하의 제안을 확인했지만 그게 효과가 없습니다. 그것은 저에게 viewModel의이 부분에 속하지 않는 예외를 제공합니다. "잡히지 않은 오류 : 바인딩을 구문 분석 할 수 없습니다. 메시지 : TypeError : Object # 에 'enabled'메소드가 없습니다." ko.applyBindings (x) 모든 viewModel을 바인드하려고하지만 그 요소 만 필요합니다. 이 코드는 초기 바인딩 후에 실행될 수 있다고 생각해야합니다. – Luffy

+0

ko.applyBindings (viewModel, x)도 시도했지만 또 다른 예외가 있습니다. 이번에는 선택한 plugin.Uncaught TypeError : undefined의 'disabled'속성을 설정할 수 없습니다. h.search_field_disabled. 실제 문제를 찾으려면 선택한 라이브러리를 파야합니다. – Luffy

+0

끝에 ko.applyBindings (viewModel, x) 통해 할 수 있습니다. 단서를 가져 주셔서 감사합니다. – Luffy

관련 문제