2014-06-11 7 views
1

knockout.js에서 select2를 사용하고 싶습니다.Select2 in Knockout.Js with custom template

저는 바인딩 핸들러가 있습니다. 내가 htis

function formatSelection(item) { 
      return '<b>' + item.text + '</b>'; 
     } 

같은 선택 2하는 포맷 기능을 통과해야 지금

<select id="itemselector" data-bind="options: items, optionsText: 'Name', OptionsValue:'Id', select2: {}"></select>  

사용자 정의 템플릿을 만들하지만 난 알아낼 수 없습니다 :

ko.bindingHandlers.select2 = { 
    init: function(element, valueAccessor, allBindingsAccessor) { 
     var obj = valueAccessor(), 
      allBindings = allBindingsAccessor(), 
      lookupKey = allBindings.lookupKey; 
     $(element).select2(obj); 
     if (lookupKey) { 
      var value = ko.utils.unwrapObservable(allBindings.value); 
      $(element).select2('data', ko.utils.arrayFirst(obj.data.results, function(item) { 
       return item[lookupKey] === value; 
      })); 
     } 

     ko.utils.domNodeDisposal.addDisposeCallback(element, function() { 
      $(element).select2('destroy'); 
     }); 
    }, 
    update: function(element) { 
     $(element).trigger('change'); 
    } 
}; 

는이 같은 핸들러를 사용 그 바인딩 핸들로이 작업을 수행하는 방법을 설명합니다. 누군가 나에게 formatfunction이나 문자열 템플릿을 바인딩 핸들러에 넘겨주는 방법을 설명해 줄 수 있습니까?

+0

나는 당신이 핸들러를 사용하는 곳에 비트를 포함하는 것을 잊었다 고 생각한다. –

+0

예. 죄송합니다. 추가했습니다. –

답변

2

select2 바인딩 선언 다음에 {}에 옵션을 추가하면됩니다. 예 :

<select id="itemselector" data-bind="options: items, optionsText: 'Name', optionsValue:'Id', select2: {formatResult: formatSelection}"></select> 

질문 다시 사용하시는 select2 바인딩은 새로운 버전입니다. lookupKey은 어떻게 사용되고 있습니까?