【问题标题】:AngularJS md-autocomplete search for a string within a stringAngularJS md-autocomplete 在字符串中搜索字符串
【发布时间】:2017-04-27 14:33:05
【问题描述】:

如何配置md-autocomplete,以便在搜索单词时,它会在字符串中搜索字符串。目前它只找到第一个单词。 与演示 https://material.angularjs.org/latest/demo/autocomplete 一样,如果您键入 new,它会找到 New Jersey。但是如果你输入 jersey,它什么也找不到。

这是我的querySearch 函数

function querySearch(query) {
    var results = query ? vm.subjects.filter(createFilterFor(query)) : vm.subjects,
        deferred;
    return results;
}

这是我的createFilterFor 函数

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

【问题讨论】:

  • 您可以使用正则表达式为该类型的搜索创建匹配模式

标签: angularjs md-autocomplete


【解决方案1】:

我是这样解决的。注意有一个带有标签的数组和不用于显示的数组。

            function querySearch(query) {

            var results = new Array();

            for (var i = 0, len = taggedSubjectArrray.length; i < len; i++) {
                var txtToCompare = taggedSubjectArrray[i].Display;

                if (txtToCompare.indexOf(query) != -1)
                {
                    // string was found
                    // Add to results
                    results.push(validationArrray[i]);
                }
            }

            return results;
        }

【讨论】:

    【解决方案2】:
    //This worked for me
    
    function createFilterFor(query) {
            debugger;
            //var lowercaseQuery = angular.lowercase(query);
    
            return function filterFn(product) {
                var results = new Array();
    
                var lowercaseQuery = angular.lowercase(query);
    
                index = 0,
                res = [];
                res.push(-1);
    
                //Get starting index of each word in string & push in array 
                while ((index = product.value.indexOf(' ', index + 1)) >= 0) {
                    res.push(index);
                }
    
                for (var i = 0; i < res.length; i++) {
                    var a = res[i] + 1;
    
                    if (product.value.indexOf(lowercaseQuery) === a)
                    {
                        return (product.value.indexOf(lowercaseQuery) === a);
                    }
                }
            };
        } 
    

    【讨论】:

      猜你喜欢
      • 2018-05-28
      • 2016-11-30
      • 2019-10-06
      • 2012-07-23
      • 1970-01-01
      相关资源
      最近更新 更多