md-autocomplete在一次之后不起作用

时间:2017-07-13 19:39:02

标签: javascript angularjs autocomplete md-autocomplete

  1. 我在文字搜索方面做了一个简单的自动完成功能。有两个函数 - querySearch(searchText)和homeresults(item)。 querySearch函数正确获取结果,并且没有问题。一旦用户选择了结果,它就会调用homeresults函数。这个功能第一次运行正常,但除非我返回主页,否则之后无法正常工作。因此,一旦用户进入结果页面,除非他回到主页,否则他不能再次使用搜索栏。没有错误。这是我的代码片段:
  2. HTML

    <form ng-submit="$event.preventDefault()">
    <md-autocomplete md-selected-item="selectedItem" md-search-text="searchText" md-items="item in querySearch(searchText)" md-item-text="item.title" md-delay="400" md-min-length="2" md-floating-label="Search for any Query">
        <div layout-align="start center">
            <span md-highlight-text="searchText" ng-click="homeresult(item)">{{item.title}}</span>
        </div>
        <md-not-found>No matches found </md-not-found>
    </md-autocomplete>
    

  3. 的Javascript

     $scope.querySearch = function(search) {
     var key = $scope.searchText;
     console.log('keyword searched by user is ' + key);
     return $http.get('/api/searchresult?title=' + key)
         .then(function(response) {
             return response.data
         });
     };
     $scope.homeresult = function(item) {
     console.log(item);
     $timeout(function() {
         item.title = item.title.replace(/ /g, '-');
         $location.url('/results').search({
             "title": item.title
         })
      }, 50);
     };
    

1 个答案:

答案 0 :(得分:0)

在homeresult()中,代码重定向到/ results。因此,如果您在定义md-autocomplete的同一页面上显示结果,而不是重定向,它将起作用。您可以添加一个简单的检查来隐藏结果,直到我们从$ http获得响应。