2016-10-14 17 views
0

私は、AngularJS、UIルータ、UIブートストラップの先読みとElasticsearchで小さな映画検索アプリを構築しました。参考までに、私は昨日ここにthisと頼んでいい、すばやく答えました。私はそれをng-keypressなしで動作させることができました。私は単に$state.go()を関数に入れてリンク/トランジションを行いました。検索入力のキーを押すと、ホーム/クエリページから結果ページに移動します。ただし、提案は表示されません。結果ページに行くと何も起こりません。私は検索入力に再度入力して、実行するための提案と検索をしなければならない。

私は、ユーザーが検索入力を入力して結果ページに移動し、そこに到着すると、候補が表示されて検索が実行できるようになると、HP上で機能を取得しようとしています。

は、ここに私のコード

HTML

<form ng-submit="vm.search()" class="form-horizontal col-md-8 col-md-offset-2" id="hp-search-form"><div class="input-group input-group-lg"> 
<input type="text" name="q" ng-model="vm.searchTerms" ng-keypress="navigate('search')" placeholder="Search" class="form-control input-lg" uib-typeahead="query for query in vm.getSuggestions($viewValue)" typeahead-show-hint="true" typeahead-focus-first="false" typeahead-on-select="vm.search($item)" auto-focus style="border:0px;"> 
    <i ng-show="loadingLocations" class="fa fa-refresh"></i> 
    <div ng-show="noResults"> 
    <i class="fa fa-remove"></i> No Results Found 
    </div> 
<span class="input-group-btn"> 
<button class="btn btn-primary btn-lg" type="submit" value="Search" id="hp-search-button" ng-submit="vm.search()"><i class="fa fa-search fa-lg"></i></button> 
</span> 

とあなたは$の状態と一緒に結果を渡すことができsearchCtrl

vm.getSuggestions = function(query) { 
    $state.go('search'); 
    console.log(vm.searchTerms); 
    vm.isSearching = true; 
    console.log(vm.searchTerms); 
    return searchService.getSuggestions(query).then(function(es_return){ 
    console.log(vm.searchTerms); 
    var suggestions = es_return.hits.hits; 
    if (suggestions) { 
     //console.log(suggestions); 
     return vm.autocomplete.suggestions = suggestions.map(function(item) { 
     return item._source.ymme; 
     //console.log(autocomplete.suggestions); 
    }); 
    } 
    else { 
    vm.autocomplete.suggestions = []; 
    vm.noResults = true; 
    } 
    vm.isSearching = false; 
    }, 
    function(error) { 
    //console.log('ERROR: ', error.message); 
    vm.isSearching = false; 
    }); 
}; 
+0

$ state.go( 'search')を書いたとき; 、もっとコードは実行されません。プランナーを作成してみてください。 –

+0

@MandeepSingh - "いつ" "どこで" $ state.go( "検索")を書かなければならないと思います。私はプランカを作ろうとするだろう、時間を取るかもしれない - 前にそれをしなかった。つまり、どこに$ state.goを置いても、コードは実行を停止します...? – user3125823

+0

なぜ検索結果を取得するために状態を変更していますか。 – pritesh

答えて

0

でgetSuggestions機能です。 go()ように:

$state.go('search', { results: vm.autocomplete.suggestions }); 

あなたは、結果ofcを返すセクションで$ state.go()を実行する必要があります。で

params: { 
    results: null 
    } 

:次のページが$ state.paramsの一環として、「結果」を受け入れることができるようにあなたが定義された「検索」していconfig.routes.jsファイルでは、あなたはこれをも必要となります検索結果にアクセスするには、

$state.params.results 

を入力して検索結果にアクセスします。

+0

私はそれを試してみるつもりです、ありがとう – user3125823

関連する問題