我使用Select2和knockout.js。Select2 with Knockout.js inital value
但該控件不顯示初始值正確。它看起來像選擇功能不提高
我修改了現有的jsbin來演示我的問題。
http://jsbin.com/xufovura/6/edit
結合:自定義的
<div data-bind="value: selectedState, select2: { data: states, placeholder: 'Select a State', formatResult: format ,initSelection: initSelect}" class="select2" style="width: 200px"></div>
部分結合(在jsbin完整的代碼):
ko.bindingHandlers.select2 = {
init: function(el, valueAccessor, allBindingsAccessor, viewModel) {
ko.utils.domNodeDisposal.addDisposeCallback(el, function() {
$(el).select2('destroy');
});
var allBindings = allBindingsAccessor(),
select2 = ko.utils.unwrapObservable(allBindings.select2);
$(el).select2(select2);
}
};
function initSelect(element, callback) {
console.log("initSelect");
var selectedItems = $.grep(this.states, function (e) { return e.id == element.id; });
console.log(element);
callback(selectedItems[0]);
}
的原因,您的initSelect功能不被調用的是select2認爲你的佔位符被選中。您需要使用輸入元素,而不是div,因爲select2將嘗試通過調用jQuery的val函數來讀取元素的當前「值」。一個div元素總是會返回「」 –