2014-06-11 65 views
1

我想在select中使用knockout.jsSelect2 in Knockout.Js用自定義模板

爲此我有一個綁定操作器。

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'); 
    } 
}; 

我使用的處理程序是這樣的:

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

現在做自定義模板我必須通過格式功能選擇2樣htis

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

,但我想不出瞭解如何使用該綁定句柄執行此操作。有人可以解釋我如何將格式函數或字符串模板傳遞給綁定處理程序,以便將其應用於選擇?

+0

我想你忘了在你使用處理程序的位置(你說「像這樣:」沒有任何東西)。 –

+0

對不起,我添加了它 –

回答

2

只需在select2綁定聲明後將您的選項添加到{}即可。例如:

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

回答您,您使用的select2綁定是我的新版本。如何使用lookupKey