AngularJS - 在$ timeout内请求

时间:2015-10-19 10:47:09

标签: angularjs autocomplete request timeout

我想使用Angular Material <md-chips>制作自动完成功能。 我有以下html:

     <md-chips ng-model="programs" md-require-match="true">
         <md-autocomplete
             md-selected-item="selectedItem"
             md-search-text="searchText"
             md-items="item in querySearch(searchText)"
             md-item-text="item.name"
             placeholder="Target programs"
             md-autoselect="true">
             <span md-highlight-text="searchText">{{item.name}}</span>
        </md-autocomplete>  
        <md-chip-template>
           <span>
             <strong>{{$chip.name}}</strong>
           </span>
        </md-chip-template>
    </md-chips>

和方法querySearch

                // Search for programs
                scope.querySearch = function(query) {
                    if (typeof pauseMonitor !== 'undefined') {
                        $timeout.cancel(pauseMonitor); 
                    }

                    pauseMonitor = $timeout(function() {
                        Programs.getQuery(query)
                        .then(function(data){
                            return data.data.campaigns;
                        });
                    }, 250);
                };

我的问题是,在输入自动完成输入后,该方法会找到匹配良好的匹配项,但浏览器不会显示它们。我认为这可能是因为请求,但我不知道如何解决它。

感谢。

1 个答案:

答案 0 :(得分:0)

在我看来,你忘记返回结果,你返回data.data.campaings,但你也必须退还承诺。

你可以试试这个:

// Search for programs
scope.querySearch = function(query) {
    if (typeof pauseMonitor !== 'undefined') {
        $timeout.cancel(pauseMonitor); 
    }

    pauseMonitor = $timeout(function() {
        return Programs.getQuery(query)
        .then(function(data){
            return data.data.campaigns;
        });
    }, 250);
    return pauseMontitor;
};