我遇到了可观察插件和自定义绑定的问题。 Observable插件适用于标准绑定。我已经创建了typeahead自定义绑定,代码如下。插件的最后一部分是问题,如果值是正常的可观察的,它就可以工作。但是对于可观察的插件,它并不是因为该属性不是“正常的”可观察的。如何使用Observable插件设置selectedItem的值?
ko.bindingHandlers.typeahead = {
init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
valueAccessor().initialize();
var selectedItem = allBindings.get('selectedItem');
var minLength = allBindings.get('minLength');
if (!minLength)
minLength = 3;
$(element).typeahead(
{
minLength: minLength,
highlight: true
},
{
name: 'best-pictures',
displayKey: 'Name',
source: valueAccessor().ttAdapter(),
templates: {
...
}
}).on('typeahead:selected',
function (event, suggestion, dataset) {
selectedItem(suggestion);
});
}
};
用法
<input data-bind="typeahead: projectTasks, selectedItem: task"/>
其中projectTasks是Bloodhound“datasource”