搜素時自動補全功能的實現

前端:angularjs前端

<input type="text" class="#" ng-blur="#" ng-model="params.r"angularjs

                        typeahead="r as r.name for r in  filter($viewValue)"/>框架


 filter($viewValue)是數據源,這個能夠異步獲取異步

$scope.filter  =  function(val){url

        return service.get('url', {spa

                params : params事件

            }).then(function (res) {get

               return res.list;input

            }, function (rej) {it

                growl.addErrorMessage("操做失敗");

            });

}

注:res表示請求成功,rej表示請求失敗


這樣的話即可以實現一個簡單的自動補全,存在的問題

1:多音字

2:輸入不存在的搜索信息


對於多音字咱們能夠使用 Pinyin4j在後臺匹配的時候處理(強調:爲了實現模糊搜索請記住String的contain方法)


對於輸入不存在的搜索信息前臺作處理,添加一個 ng-blur事件來控制你須要的輸入


下面這個例子是對你的輸入信息進行匹配,若是不是預期,當光標點擊別處輸入框清空

$scope.projectBlur = function(val) {

            var tmpR = '';

            if (val === undefined || val.name === undefined || $scope.params.r.name === undefined) {

              $scope.params.r = tmpR;

            } else {

              if (val.name === $scope.params.r.name) {

                tmpR = $scope.params.r;

                return true;

              } else {

                $scope.params.r = tmpRt;

              }

            }

        };


附錄:Pinyin4j的代碼

連接:Pinyin4j

搜素能夠使用lucence框架

相關文章
相關標籤/搜索