ko-jquery自动完成自定义绑定将覆盖以前的绑定
ko jquery autocomplete custom binding overrides previous binding
我为jquery自动完成编写了一个简单的自定义绑定,如下所示:
ko.bindingHandlers.autoComplete = {
init: function (element, valueAccessor, allBindingsAccessor) {
var self = this;
self.getUrl= ko.unwrap(valueAccessor());
self.successCallBack = allBindingsAccessor().successCallBack;
self.selectCallBack = allBindingsAccessor().selectCallBack;
$(element).autocomplete({
minLength: 3,
source: function (request, response) {
$.ajax({
url: self.getUrl + request.term,
type: 'GET',
cache: false,
dataType: 'json',
success: function (data) {
response(self.successCallBack(data));
},
});
},
error: function(xmlHttpRequest, textStatus, errorThrown) {
alert('some error occured', textStatus, errorThrown);
},
open: function () {
$(element).data("uiAutocomplete").menu.element.addClass("dropdown-menu-xs");
},
select: function (event, ui) {
self.selectCallBack(event, ui);
}
});
}
};
当我的页面中只有一个元素具有此绑定时,它可以正常工作,但当我有两个或多个元素时,最新的自动完成字段的url将应用于具有自动完成绑定的所有元素
例如,如果我的页面上有:
<input id="first" type="text" class="form-control input-xs" data-bind="autoComplete: firstURL" />
<input id="second" type="text" class="form-control input-xs" data-bind="autoComplete: secondURL" />
两个输入元素在各自的ajax调用中都将以"secondURL"结束。
我尝试在控制台中记录"element"answers"getUrl"值,但它们显示为不同的值。
如果能对我做错的地方有任何见解,我将不胜感激,谢谢。
不要使用this
。init
函数不是构造函数。您可以将self
作为对象文字,也可以仅将var
用于回调。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- react.js中的密钥绑定
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 将事件处理程序绑定到任何可能的事件
- AngularJS指令只识别双向绑定类型
- Telerik rad组合框多列数据绑定
- 在绑定多个动态 JQGard 时覆盖参数
- ko-jquery自动完成自定义绑定将覆盖以前的绑定
- 如何防止vue.js覆盖组件中的jQuery绑定
- 为什么Knockout.js数据绑定到checkedValue会覆盖observable
- 将c++的虚方法绑定到具有覆盖能力的js中
- 是否可以将多个事件处理程序绑定到JqGrid事件而不覆盖以前的事件处理程序?
- 如何在不擦除/覆盖任何旧绑定的情况下将Knockout.js组件附加到页面
- 防止 JavaScript OnClick 绑定 confirm() 覆盖 VB.NET Click 处理程序
- 为什么这个指令中的所有键绑定都被最后一个键绑定覆盖?