2016-06-30 4 views
0

Entschuldigung für den langen Titel. Diese Frage wird in der Antwort zur Verfügung gestellt Basis hereAngularJS Ng-route - Wechseln zu einer bestimmten Seitenansicht beim Eingeben einer Eingabe: Text von einer anderen URL

Ich habe eine Seite mit zwei Ansichten

app.config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) { 

$routeProvider 
.when('/content1', { 
    templateUrl: 'content1.html', 
    controller: 'myCtrl' 
}) 

.when('/content2', { 
templateUrl: 'content2.html', 
controller: 'myCtrl' 
}) 

.otherwise({ 
redirectTo: '/content1' 
}); 

}]); 

Wenn in ein Eingabe eingeben: Text schaltet er auf den zweiten Blick eine ng Änderungs-Direktive, die die Funktion auslöst searchProduct() und beginnt sofort mit einer ng-model Direktive zu suchen.

<div ng-controller="myCtrl" ng-app="myApp"> 
<input type="text" 
     ng-change="searchProduct()" 
     ng-model="searchFilter" 
     ng-model-options="{ updateOn: 'default blur', debounce: { 'default': 500, 'blur': 0 } }"> 
<ng-view></ng-view> 
</div> 

Als die searchProduct() Funktion

$scope.searchProduct = function() { 
    $location.path('content2'); 
    $location.search({ 
     searchFilter: $scope.searchFilter 
    }); 
}; 

alles richtig funktioniert. Aber das Problem ist, dass ich das gleiche Feature auf einer anderen Seite mit einer anderen URL implementieren möchte (dies ist für SEO-Zwecke), so dass bei der Suche auf dieser Seite würde es auf content2.html umleiten, und es würde auch beibehalten, was hat wurde in das Suchfeld eingegeben.

Ich habe versucht, es durch Festlegen eines absoluten Pfades zu tun, aber es scheint nicht zu funktionieren. Sie können a working plunker with the code here sehen. Danke im Voraus!

+0

nicht ganz verstehen die Frage, aber haben Sie versucht, das Suche-Feld in einer übergeordneten Ansicht setzen, und die Schalen Seiten Kind Ansichten machen? Sie können auch ng-include verwenden, um die Ansichten gemäß einer Logik in einer Funktion innerhalb Ihres Hauptcontrollers zu wechseln. – afkplus

+0

Ich weiß, es ist ein bisschen verdreht. Der Punkt ist, dass eine der Seiten, ich möchte es eine eigene andere URL haben, aus SEO Gründen – Joe82

+0

Ich habe den letzten Absatz bearbeitet, ich hoffe, es klärt, was ich erreichen will :) – Joe82

Antwort

1

Ich würde vorschlagen, Sie $ Stateprovider für Routing zu verwenden. Es ist besser als Routenanbieter. Sie können die Pluspunkte im Netz über $ routeProvider auslesen. Die Route ist jetzt mehr veraltet. Bei einem staatlichen Anbieter müssen Sie nur in den Status umleiten. Ihr Problem wird ebenfalls gelöst. $ state.go ('content2') oder $ state.go ('home') Sie können auch geschachtelte Zustände haben.

https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stateprovider-1

+0

Ich werde es untersuchen. Empfiehlst du die Version 0.3.1 https://github.com/angular-ui/ui-router/tree/legacy oder den 1.0 alpha https://github.com/angular-ui/ui-router (Ich arbeite mit eckigem 1.5) Danke! – Joe82

Verwandte Themen