Kendo 设置过滤器 属性 后,下拉列表小部件会中断
Kendo Drop Down List Widget breaks when filter property set
我有一个 kendo 下拉列表绑定到远程数据源。我已经按照文档并配置了虚拟化,并且远程数据源按预期工作,但是如果完全设置了 Filter 选项,则模糊打开的下拉列表会在 JS 中引发错误,而选择任何内容都会在 JS 中引发错误.关闭列表的唯一方法是单击下拉小部件中的关闭箭头。
下面是我在控制台中看到的错误屏幕。 'Add' 选择项目时出现未定义:
'Attr' 未定义发生在单击下拉列表外部以模糊和关闭时。
我在这里不知所措。添加任何过滤器选项都会导致这些错误。我通过系统地删除所有可能的选项将其作为问题隔离开来,唯一似乎可以防止错误发生的是过滤器选项:
@(Html.Kendo().DropDownList()
.Name("MyDropDown")
.DataTextField("MyText")
.DataValueField("Id")
.Filter(FilterType.Contains) //<--This guy right here
...
..more code..
...
)
我已经在 JavaScript 中尝试过了,我已经使用 kendo ASP.NET MVC 包装器和 .ToClientTemplate 选项进行了尝试。我已经尝试过单独使用 MVC 包装器。我一定是遗漏了什么,可惜我没有看到。
编辑:问题似乎发生在 kendo.all.js 的关闭处理程序中:
_closeHandler: function (e) {
if (this.trigger(CLOSE)) {
e.preventDefault();
} else {
this._focused.attr('aria-expanded', false);
this.ul.attr('aria-hidden', true);
}
},
当它在关闭时将 aria-expanded 设置为 false 时,_focused 属性 未定义。这发生在关闭事件之前,因为我试图挂钩关闭以查看是否有我可以手动更正的内容。这个脚本不起作用有什么原因吗?我缺少文件吗?一切似乎都已正确配置,但尽管如此,小部件还是坏了。
编辑#2:我认为 kendo 库可能有问题,或者库之间有些不匹配,或者这可能是旧版本中的错误,所以我更新了我的 kendo 库和 mvc 包装器升级到最新版本 (2018.1.117),完全相同的问题仍在发生。我想也许 jquery 版本不匹配导致了这个问题,但根据文档,版本 2018.1.117 需要我正在使用的 jQuery 版本 1.12.4。刚刚更新了所有库和依赖项,但我仍然遇到错误。
尝试 .Filter("contains")
,可能会成功。
在设置问题的独立测试时,我偶然发现了劫持 jQuery.fn.focus 的第 3 方脚本中的一行,这显然有一些严重的副作用。在第 3 方脚本中删除这一行似乎完全解决了这个问题。
我有一个 kendo 下拉列表绑定到远程数据源。我已经按照文档并配置了虚拟化,并且远程数据源按预期工作,但是如果完全设置了 Filter 选项,则模糊打开的下拉列表会在 JS 中引发错误,而选择任何内容都会在 JS 中引发错误.关闭列表的唯一方法是单击下拉小部件中的关闭箭头。
下面是我在控制台中看到的错误屏幕。 'Add' 选择项目时出现未定义:
'Attr' 未定义发生在单击下拉列表外部以模糊和关闭时。
我在这里不知所措。添加任何过滤器选项都会导致这些错误。我通过系统地删除所有可能的选项将其作为问题隔离开来,唯一似乎可以防止错误发生的是过滤器选项:
@(Html.Kendo().DropDownList()
.Name("MyDropDown")
.DataTextField("MyText")
.DataValueField("Id")
.Filter(FilterType.Contains) //<--This guy right here
...
..more code..
...
)
我已经在 JavaScript 中尝试过了,我已经使用 kendo ASP.NET MVC 包装器和 .ToClientTemplate 选项进行了尝试。我已经尝试过单独使用 MVC 包装器。我一定是遗漏了什么,可惜我没有看到。
编辑:问题似乎发生在 kendo.all.js 的关闭处理程序中:
_closeHandler: function (e) {
if (this.trigger(CLOSE)) {
e.preventDefault();
} else {
this._focused.attr('aria-expanded', false);
this.ul.attr('aria-hidden', true);
}
},
当它在关闭时将 aria-expanded 设置为 false 时,_focused 属性 未定义。这发生在关闭事件之前,因为我试图挂钩关闭以查看是否有我可以手动更正的内容。这个脚本不起作用有什么原因吗?我缺少文件吗?一切似乎都已正确配置,但尽管如此,小部件还是坏了。
编辑#2:我认为 kendo 库可能有问题,或者库之间有些不匹配,或者这可能是旧版本中的错误,所以我更新了我的 kendo 库和 mvc 包装器升级到最新版本 (2018.1.117),完全相同的问题仍在发生。我想也许 jquery 版本不匹配导致了这个问题,但根据文档,版本 2018.1.117 需要我正在使用的 jQuery 版本 1.12.4。刚刚更新了所有库和依赖项,但我仍然遇到错误。
尝试 .Filter("contains")
,可能会成功。
在设置问题的独立测试时,我偶然发现了劫持 jQuery.fn.focus 的第 3 方脚本中的一行,这显然有一些严重的副作用。在第 3 方脚本中删除这一行似乎完全解决了这个问题。