2016-08-18 1 views
0

Ich möchte eine E-Mail-Clientanwendung erstellen, bei der der Benutzer zuerst ein Anmeldefenster sehen und dann mit wenigen anderen Ansichten zur Hauptansicht weitergeleitet wird. Wie empfangene E-Mails, entfernt, Spam ect. Um dies zu tun habe ich ui-Router und verschachtelte Ansichten und meine Config-Code wie folgt aussehen:eckige verschachtelte Ansichten funktionieren nicht

app.config(function($stateProvider, $urlRouterProvider){ 
$urlRouterProvider.otherwise('/login'); 

$stateProvider 
.state('/',{ 
    url: '/login', 
    templateUrl: 'views/login.html', 
    controller: 'loginCTRL' 
}) 
.state('main',{ 
    url: '/main', 
    templateUrl: 'views/mainView.html', 
    controller: 'MailCtrl' 

}), 
.state('main.received', { 
    url: '/received', 
    templateUrl: '/views/received.html' , 
    controller: 'receivedCTRL' 
    }) 

    }) 
.state('main.spam', { 
    url: '/spam', 
    templateUrl: '/views/spam.html', 
    controller: 'spamCTRL' 

    }) 
.state('main.removed', { 
    url: '/removed', 
    templateUrl: '/views/removed.html', 
    controller: 'removedCTRL' 

    }) 
.state('main.message', { 
    url: '/message', 
    templateUrl: '/views/FullMessage.html', 
    controller: 'MailCtrl' 

    }) }); 

Aber anstatt Darstellung aller verschachtelten Ansichten auf meine E-Mail-Panel sendet er mich zurück Ansicht einzuloggen. Alle Wege sind korrekt.

+0

können Sie bitte den Inhalt von 'views/mainView.html' bereitstellen? –

+0

https://jsfiddle.net/g6j7e6yp/ <--- hier ist es. Der ui-view-Bereich befindet sich ganz unten im Code. –

+0

Es gibt einige Tippfehler in der stats-Konfiguration: 'main.received' und' main.message' schließen zweimal und es gibt ein Komma nach dem Status 'main'. Bitte lassen Sie mich wissen, ob das auch in Ihrem Code oder nur hier vorhanden ist. –

Antwort

0

die Vorlage in main Zustand verwendet, dass Sie ein namenlos ui-view hat. Etwas wie:

<div ui-view></div> 

Mindestens 1 ui-Ansicht wird in Mutter Staaten erforderlich für sie Kind ist zu füllen (es sei denn, Sie einige wirklich erweiterte Konfiguration verwenden)

UPDATE

Bei der Verwendung von UI- Router, verwenden Sie $state anstelle von $location. $state ist der Dienst, der zum Navigieren zwischen Zuständen dient und mit den Namen von Staaten verwendet werden kann.

In Ihrem loginCtrl versuchen $location.path für $state.go('main') Wechsel (denken Sie daran, die Abhängigkeit für $state in der Steuerung Parameter enthalten)

Auch wenn Links in HTML erstellen, verwenden Sie ui-sref="state_name" als Judson Terrell vorgeschlagen.

Normalerweise, wenn ui-router auf die Standard-URL umleitet, liegt das daran, dass kein Status für die angegebene URL gefunden werden konnte. Mit diesem Ansatz können Sie sicherstellen, dass die URL, die dem Browser zur Verfügung gestellt wird, mit der für Ihren Status konfigurierten übereinstimmt.

Wenn dies nicht funktioniert, versuchen Sie auch, die $urlRouterProvider.otherwise Zeile zu kommentieren, um eine Umleitung zu vermeiden.

+0

Ich bin mir auch nicht sicher, ob '/' ein gültiger Name ist ...Ich würde es nur für den Fall ändern –

0

Vielleicht ist das das Problem? Du brauchst das stattdessen?

$stateProvider 
    .state("otherwise", { url : '/login'}) 

auch nehme ich Dich so verknüpfen ..

<a ui-sref="mystate">Go To My State</a> 
Verwandte Themen