2016-05-17 6 views
1

私はAngularJsを使ってWebアプリケーションを構築しています。私は検索ページを持っています。ユーザーテープにはいつも、バックエンドからデータを取得して、 $ location.search()サービスを使用しています。ユーザーがリフレッシュボタンを押すと、ビューの状態(同じクエリ)を保存します。現在のクエリを取得するために$ location.search()を使用しますが、空のオブジェクトであり、コントローラが再ロードされてスコープがなくなる(ユーザクエリを含むスコープ)。ng-routeを使用していて、reloadOnsearch = falseを設定します。$ locationを使用してurl変更と更新ボタンを処理できます。 search()サービス?

app.controller('resultCrtl',function($scope,myService,$http,$location,$window) { 
/*guetting query from previous view*/ 
$scope.userquery=myService.get(); 

    var uri; 
/*testing the refresh */ 
    if(!myService.get()) 
{ 
var loc=$location.search('query'); 
    $window.alert(loc); 
    /* it returns an empty object*/ 
    } 
else { 

    $http({ 
     method : 'GET', 
     url : '/response/' + $scope.userquery 
    }).success(function(data) { 
     $scope.result = data; 
     uri=encodeURI($scope.userquery); 
     $location.search('query',uri); 
    }).error(function(data, status, headers, config) { 
     alert("failure"); 
    }); 
$scope.search=function(){ 
    /* same code to get data and update the url */ 
    } 
    }); 

答えて

0

明らかに、リフレッシュ後は空白になります。 '$ location.search(' query '、uri);'ブラウザのアドレスバーのみを変更または更新します。したがって、リフレッシュ後、$ stateParams.queryを使用してブラウザのアドレスバーからこの値を取得し、どこでも好きなところでそれを使用することができます: それがあなたを助けてくれることを願っています。 :)

+0

実際に私はngrouteと一緒に働いています。$ stateParamsはui-router moduleで提供されていると思います。ページが更新されるときに問題が発生するので、何も取得できません...ありがとうと思います。 ) – desmanda

関連する問題