1
  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);
     };
    
4

1 回答 1

0

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

于 2017-07-15T01:57:52.050 回答