Javascript 使用自定义模板在Knockout.Js中选择2
我想在knockout.js中使用select2 为此,我有一个bindinghandlerJavascript 使用自定义模板在Knockout.Js中选择2,javascript,knockout.js,jquery-select2,Javascript,Knockout.js,Jquery Select2,我想在knockout.js中使用select2 为此,我有一个bindinghandler ko.bindingHandlers.select2 = { init: function(element, valueAccessor, allBindingsAccessor) { var obj = valueAccessor(), allBindings = allBindingsAccessor(), lookupKey
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>
现在,为了制作自定义模板,我必须传递一个format函数来select2,比如htis
function formatSelection(item) {
return '<b>' + item.text + '</b>';
}
函数格式选择(项){
返回“”+item.text+“”;
}
但我不知道如何用那个绑定句柄来实现这一点。有人能告诉我如何将formatfunction或字符串模板传递给绑定处理程序,以便将其应用于select吗?只需在select2绑定声明之后的{}
中添加您的选项即可。例如:
回到您的问题,您正在使用的select2绑定对我来说是一个新版本。
lookupKey
是如何使用的?我想你忘了包括你使用处理程序的位置(你说的“像这样:”没有任何内容)。是的,很抱歉我添加了它