0

您如何配置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);
    };
}
4

2 回答 2

0

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

            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;
        }
于 2016-09-05T08:13:12.330 回答
0
//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);
                }
            }
        };
    } 
于 2017-04-27T06:33:05.817 回答