我想知道是否有一种方法可以仅使用占位符而不是第一个值来初始化下拉列表?
html
<select class="select2" data-bind="options: $root.AvailableFrom,
value: SelectedFrom,
optionsValue: function(i) {return i.ID},
optionsText: function(i) {return i.Name},
select2: {placeholder: 'Please select a Person...',
allowClear: false}"></select> </td>
JS
ko.bindingHandlers.select2 = {
init: function (element, valueAccessor, allBindingsAccessor, bindingContext) {
ko.utils.domNodeDisposal.addDisposeCallback(element,
function() {
$(element).select2('destroy');
});
var select2 = ko.utils.unwrapObservable(allBindingsAccessor().select2);
$(element).select2(select2);
},
update: function (element, valueAccessor, allBindingsAccessor, bindingContext) {
var allBindings = allBindingsAccessor();
if ("value" in allBindings) {
if ((allBindings.select2.multiple || element.multiple) && allBindings.value().constructor != Array) {
$(element).val(allBindings.value().split(',')).trigger('change');
} else {
$(element).on('select2:selecting', function (e) {
// $(this).select2(allBindingsAccessor().options);
var data = e.params.args.data.id;
console.log("Selected ID = " + data);
});
console.log($(element).select2('data'));
$(element).val(allBindings.value()).trigger('change');
}
}
$(element).trigger("change");
}
};
我已经读过,如果我把<option></option>它默认为占位符,但由于我使用的是 a<select>我不太确定我将如何实现它。谢谢!