我正在练习使用 knockout.js 连接 jQuery 自动完成功能。我正在尝试构建的应用程序是一个简单的待办事项列表。我的任务对象具有desc
,name
和,等属性id
。它有一个setUser()
设置任务名称和 ID 的方法(基本上将任务分配给某人。
我用这种方式编写了我的自定义绑定:
ko.bindingHandlers.autocomplete = {
init: function (el, valueAccessor) {
var va = valueAccessor();
var lbl = va.label;
var val = va.value;
$(el).autocomplete({
source: src,
select: function (evt, ui) {
evt.preventDefault();
lbl(ui.item.label);
val(ui.item.value);
$(el).val(ui.item.label);
}
});
}
};
data-bind
语法编写如下:
<input type="text" data-bind="autocomplete : {label: name, value: id}"/>
所有这些都可以完美地连接自动完成。但是,以您更改模型中的某些内容为例,您自然希望关联的文本框反映更新的结果。
这里的简单解决方案是添加值绑定:
<input type="text"
data-bind="autocomplete : {label: name, value: id}, value: name"/>
value
但是,如果没有绑定,您如何做到这一点?!
jsbin链接:http: //jsbin.com/InUHIwE/3/