2017-04-24 5 views
0

Ich habe 10 ähnliche Felder in meinem Dashboard, die jeweils unterschiedliche Werte für ein bestimmtes Gerät zeigen. Wenn der Benutzer auf jeden klickt, muss ich ihn auf eine neue Seite leiten, auf der weitere Informationen zu diesem Gerät angezeigt werden.Wie Params vom vorherigen Zustand zum neuen Zustand in Winkel übergeben?

Das Layout der zweiten Seite für alle Geräte ist identisch. Ich muss nur den $ scope aktualisieren.

Was ist ein sauberer eckiger Weg, um dies zu erreichen, vorzugsweise keine Anfrage an die URL?

Ich verwende $ stateProvider und versuchte, es mit onEnter() arbeiten zu lassen, konnte aber noch nicht.

+0

Bitte fügen Sie Code hinzu, der das Beschriebene abdeckt und/oder ein Plunker-Beispiel erstellt. – eminlala

Antwort

1

$stateParams sollte den Trick tun. Um es zu verwenden, müssen Sie die Parameter beim Routing angeben. Zum Beispiel:

(function(){ 
    'use strict'; 

    angular 
    .module('app') 
    .config(ApplicationConfig); 

    //set dependencies for ApplicationConfig 
    ApplicationConfig.$inject = ['$stateProvider']; 

    function ApplicationConfig($stateProvider){ 
     //Define route states 
     $stateProvider 
     .state('main', { 
     abstract: true, 
     url: '/main', 
     templateUrl: 'pages/main/main.html', 
     controller: 'MainCtrl', 
     controllerAs: 'main', 
     cache: true, 
     params: { 
      user: null 
     } 
     }); 
    } 

Dann nutzen Sie $state.go('stateName', { param: param }), zum Beispiel (nach dem vorherigen Beispiel):

//Inside your original controller 
function goToMainPage(param) { 
    $state.go('main', { user: param }); 
} 

Schließlich greifen Sie auf die Parameter in Ihrem Ziel-Controller durch einen $stateParams.param tun, oder, in der Fall des vorherigen Beispiels, $stateParams.user.

+0

danke für die lösung. Würden Sie das hinzufügen, wenn die neue Seite den Benutzer authentifizieren muss? – DragonKnight

+1

Wenn Sie eine Möglichkeit zur Authentifizierung testen möchten, empfehle ich, Stack Overflow zu suchen und danach zu fragen, wenn Sie keine Lösung finden. Es gibt viele Möglichkeiten und es hängt stark davon ab, welche Authentifizierungsmethode Sie verwenden. Nun, wenn Sie fragen, wie sicher diese Methode ist - Sie können immer noch die Ereignisse überwachen und 'preventDefault' verwenden, um das Laden einer Ansicht zu stoppen. Leider weiß ich nicht viel über Sicherheit, um mehr zu helfen. –

+1

Danke für Info. – DragonKnight

Verwandte Themen