7

https://material.angularjs.org/latest/#/demo/material.components.autocomplete

请有人告诉我如何使自动完成(Angular 材料)不仅在单词的开头搜索字符串,而且在单词中的任何位置搜索字符串。

例如单词 Alabama:当您输入“Ala”时有效,但当您输入“bama”时无效。当我输入“bama”时,如何让它工作?

我知道我可以使用第三方指令,例如 Angucomplete Alt: http ://ghiden.github.io/angucomplete-alt/ 但我认为 Angular 材料应该有这个选项?

4

2 回答 2

10

这是原始 md-autocomplete 中的一个功能:

function createFilterFor(query) {
  var lowercaseQuery = angular.lowercase(query);
  return function filterFn(state) {
    return (state.value.indexOf(lowercaseQuery) === 0);
  };
}

请尝试稍微更改条件,如下所示:

    return (state.value.indexOf(lowercaseQuery) >= 0);

它应该按照你想要的方式工作。

于 2016-01-21T10:31:40.157 回答
3

由于指定了插入符号标志,该演示仅匹配结果开头的字符,即:md-highlight-flags="^i"

要允许自动完成查找任何匹配的字符,您应该使用全局标志,即:md-highlight-flags="gi"

您还需要将state.value.indexOf(lowercaseQuery) === 0filterFn 函数中的行更改为state.value.indexOf(lowercaseQuery) !== -1

检查此代码笔以获取工作示例: http ://codepen.io/DevVersion/pen/KrOYoG

于 2017-01-27T14:32:15.347 回答