2016-05-17 8 views
1

Ich benutze AngularJs, um eine Webanwendung zu erstellen.Ich habe eine Suchseite.Jede Zeit, die der Benutzer eine Abfrage aufzeichnet, bekomme ich die Daten vom Backend und aktualisiere die URL Verwenden Sie $ location.search() service.Wenn der Benutzer die Schaltfläche zum Aktualisieren drücken möchte ich den Status der Ansicht (die gleiche Abfrage) speichern. Ich verwende $ location.search(), um die aktuelle Abfrage abzurufen, aber es gibt ein zurück leeres Objekt und der Controller wird neu geladen, so dass auch der Bereich verschwunden ist (der Bereich, der die Benutzerabfrage enthält). Ich benutze ng-route und konfiguriere reloadOnsearch = false. Wie kann ich die URL-Änderung und die Refresh-Schaltfläche mit $ location behandeln. Suchdienst()?

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 */ 
    } 
    }); 

Antwort

0

Offensichtlich wird es nach der Aktualisierung leer sein. '$ location.search (' query ', uri);' ändert oder aktualisiert nur die Adressleiste des Browsers. Also nach der Aktualisierung können Sie diesen Wert aus der Browser-Adressleiste mit $ stateParams.query erhalten und weiter verwenden wo immer Sie wollen ... :) Ich hoffe, es wird Ihnen helfen. :)

+0

eigentlich arbeite ich mit ngroute Ich denke $ stateParams wird mit UI-Router-Modul zur Verfügung gestellt.Das Problem hier, wenn die Seite aktualisiert wird die Abfrage ist leer, so kann ich überhaupt nichts bekommen ... Trotzdem danke:) – desmanda

Verwandte Themen