2013-05-06 1 views
2

this example에 설명 된 것과 유사한 "옵션"바인딩을위한 간단한 KO 사용자 지정 바인딩 래퍼를 만들려고합니다. 내 목표는 지정된 선택 상자에 select2.js을 적용 할 사용자 지정 바인딩을 갖는 것입니다."옵션"바인딩을 가진 knockout 사용자 지정 바인딩 래퍼

사용자 정의 래퍼에 options binding을 래핑하여 시작하려고하지만 어떤 이유로 작동하지 않습니다. 이에

ko.bindingHandlers.select2 = { 
    init: function (element) { 
     ko.bindingHandlers.options.init(element); 
    }, 
    update: function (element, valueAccessor, allBindingsAccessor) { 
     ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor); 
    } 
}; 

어떤 도움을 크게 감상 할 수있다 : 여기

내가 (jsFiddle)이 것입니다.

답변

2

jsFiddle이 스크립트를로드하는 방식과 관련된 것으로 보입니다. onLoad으로 설정 했으므로 custom 바인딩을 만들기 전에 applyBindings가 호출되었습니다. 하나 사소한 문제를 제외하고는 작동 No wrap in <body> 같은 것을 사용하는 바이올린을 변경하는 경우

는 :

options 바인딩은 init 버전 2.2 아래에서 바인딩이 없습니다. 2.3 이후에는 init 함수가 있습니다.

init: ko.bindingHandlers.options.init, 
update: function (element, valueAccessor, allBindingsAccessor) { 
    ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor); 
} 

이 정의되지 또는 (2.3 용)가 무엇을 사용 하나 : 당신이 (엄격하게 그것을 포장) 당신의 init 기능에 더 아무것도 할 필요가없는 경우에, 당신은 할 수 있습니다.

샘플 : http://jsfiddle.net/rniemeyer/AerJ5/

+0

고맙습니다. –

+0

바인딩이 init/update 함수를 가지고 있는지, 그리고 매개 변수가 무엇인지 알아내는 방법은 궁금합니다. 옵션 바인딩 (https://github.com/SteveSanderson/knockout/blob/master/src/binding/defaultBindings/options.js)에서 GitHub를 살펴보면 init 함수를 사용하여 요소를 확인했습니다. 선택 입력이었고 거기에있는 옵션을 제거했습니다. –

+1

@BinyominTrager -이 경우 약간 혼란 스럽습니다. 우리는 릴리즈되지 않은 코드에서'options' 바인딩을 업데이트했습니다 (2.3에 있습니다). 이것은 매우 드문 일입니다 (코어 바인딩에서 init/update 메소드를 추가/제거하십시오). 이전/새 버전의 KO를 지원하려면 호출하기 전에 존재하는지 확인해야합니다. 시연 할 답변을 업데이트하겠습니다. –