Kendo Ui 自动完成 - 如何将默认过滤器 "startWith" 更改为 "contains"?

Kendo Ui AutoComplete - How to change default filter "startWith" to "contains"?

我的应用程序是用 AngularJs 和 KendoUI 控件构建的。我在应用程序中的很多地方都使用了自动完成文本框。现在客户希望搜索应该使用 "Contains" 过滤器。同样,我需要在所有使用自动完成控件的地方放置过滤器:'contains'。

我想在应用程序开始时将默认过滤器 'startWith' 更改为 'contains'。这样我就可以逃避对每个 html 文件进行更改。

有谁知道如何做同样的事情吗?

我想您需要为所有控件至少更新一次自动完成过滤器 属性 以支持动态 属性 绑定并绑定到某些根配置,例如:

<input kendo-auto-complete k-filter="config.autoComplete.defaultFilter" />

因此将来可以通过仅更新配置值来更改默认过滤器。

另一种方法 - 覆盖 "AutoComplete" 组件的默认 "setOptions" 行为,以默认在应用程序启动时某处使用正确的过滤器:

var nativeSetOptions = window.kendo.ui.AutoComplete.prototype.setOptions;

window.kendo.ui.AutoComplete.prototype.setOptions = function(options) {
  options.filter = 'contains';
  nativeSetOptions.call(this, options);      
}

您可以使用 k-options 属性:

<input kendo-auto-complete ng-model="yourModel" k-data-source="yourDataSource" style="width: 100%;" k-options="autocompleteOptions"/>

然后在你的控制器中:

$scope.autocompleteOptions = {
   filter:"contains"
}