Ok, tôi đã chiến đấu với vấn đề này trong nhiều giờ ngay bây giờ và thu hẹp vấn đề này một FiddleTwitter Bootstrap lựa chọn typeahead không bị ràng buộc bởi KnockoutJS
Vấn đề rất đơn giản là, khi tôi đang sử dụng typeahead twitter bootstrap của cắm trên nhập văn bản và thực hiện lựa chọn, giá trị không cập nhật trong KnockoutJS ViewModel. Tôi biết tôi có thể hack nó để làm việc nhưng phải có một cái gì đó mà tôi đang thiếu ở đây.
Về cơ bản những gì tôi có là:
Knockout Binding
// Bind twitter typeahead
ko.bindingHandlers.typeahead = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var $element = $(element);
var allBindings = allBindingsAccessor();
var typeaheadArr = ko.utils.unwrapObservable(valueAccessor());
$element.attr("autocomplete", "off")
.typeahead({
'source': typeaheadArr,
'minLength': allBindings.minLength,
'items': allBindings.items,
'updater': allBindings.updater
});
}
};
Knockout ViewModel
function MyModel(){
var self = this;
self.productName = ko.observable();
self.availableProducts = ['One', 'Two', 'Three'];
}
ko.applyBindings(new MyModel());
HTML
<input type="text" data-bind="typeahead:availableProducts, value:productName"/>
Phần còn lại của nội dung chỉ đơn giản là đến từ Twitter Bootstrap.
Tôi không phải là tác giả của các ràng buộc. Các ràng buộc ban đầu là ở đây: https://github.com/billpull/knockout-bootstrap Tôi tự hỏi nếu tôi bị mất một cái gì đó trong việc sử dụng? –