【问题标题】:Angular material autocomplete search anywhere in string?角度材料自动完成搜索字符串中的任何位置?
【发布时间】:2015-12-11 19:55:38
【问题描述】:

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

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

例如阿拉巴马这个词: 输入“Ala”时有效,但输入“bama”时无效。 当我输入“bama”时如何让它工作?

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

【问题讨论】:

    标签: angularjs search autocomplete angularjs-material


    【解决方案1】:

    由于指定了caret flagdemo 只匹配结果开头的字符,即:md-highlight-flags="^i"

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

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

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

    【讨论】:

    • 你知道 Angular 2 是否有这个 md-highlight-flag 吗?
    【解决方案2】:

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

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

    【讨论】:

    • 如何在不改变原始源代码的情况下做到这一点?
    猜你喜欢
    • 2021-02-23
    • 2016-02-02
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多