角度材料自动完成搜索字符串中的任何位置?

时间:2015-09-15 14:01:17

标签: angularjs string search autocomplete material

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

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

例如Alabama这个词: 键入“Ala”时工作,但键入“bama”时不起作用。 当我输入“bama”时如何让它工作?

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

2 个答案:

答案 0 :(得分:6)

这是原始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);

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

答案 1 :(得分:0)

由于指定democaret flag仅匹配结果开头的字符,即:md-highlight-flags="^i"

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

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

检查此codepen以获取一个工作示例: http://codepen.io/DevVersion/pen/KrOYoG