Ich muss ein Modal aus dem Hauptmenü anzeigen. Das Modal wird korrekt angezeigt. Aber wenn ich das Modal schließe, möchte ich, dass die vorherige URL angezeigt wird. Dies ist der Code für den Modal:angular state.go Funktion leitet nicht zur vorherigen Seite um
.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'views/home.html',
controller: 'HomeCtrl'
})
.state('pos',{
url: '/pos',
templateUrl: 'views/pos.html',
controller: 'PosCtrl'
})
.state('vAnalyze',{
url: '/vAnalyze',
templateUrl: 'views/vAnalyze.html',
controller: 'VAnalyzeCtrl'
})
.state('reportSetting',{
url: '/reportSettingModal',
onEnter: function($modal){
$modal.open({
templateUrl: 'views/reportSettingModal.html',
controller: 'ReportSettingModalCtrl'
});
}
})
.state('error', {
url: '/error',
templateUrl: 'lib/views/error.html',
controller: 'ErrorCtrl'
});
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/home');
})
.run(['AuthService', 'configSettings', '$rootScope', function (AuthService, configSettings, $rootScope)
{ // Apply Product Code
configSettings.productCode = 'VANALYZE';
AuthService.configProduct(configSettings.productCode);
$rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) {
$rootScope.$previousState = from;
});
} ]);
Dies ist die Funktion des modalen zu schließen:
$scope.close = function() {
$uibModalInstance.close();
$state.go($rootScope.$previousState.name, {
url: $rootScope.$previousState.url,
templateUrl: $rootScope.$previousState.templateUrl,
controller: $rootScope.$previousState.controller
});
};
Als ich in den Code der URL, templateUrl und Controller haben alle die richtigen Daten treten. Aber die Seite wird nicht angezeigt. Die Seite, die beim Schließen des Modales angezeigt wird, lautet reportSettingModal
.
Was mache ich falsch?
Ändert sich die URL, oder passiert das nicht? BTW - warum übergeben Sie dieses Objekt an $ state.go zweiten Parameter. Auch verwende ich Router für Modale nie, aber es hängt von der UC ab (z. B. das Modal sollte Lesezeichen-fähig sein) –
Die URL ändert sich, wenn ich das Modal von verschiedenen Seiten einleite. Für die Funktion state.go habe ich folgendes versucht: '$ state.go ($ rootScope. $ PreviousState.name)' Aber die Seite hat sich nicht geändert. SO dachte ich, wenn es expliziter wäre, würde es funktionieren. Aber es tat es nicht. Ich weiß nicht, was du meinst, wenn du einen Router für Mods verwendest. Normalerweise habe ich Modale von einer Seite aufgerufen und wenn sie geschlossen wird, ist die Hauptseite sichtbar. Dieses Modal wird aus dem Hauptmenü aufgerufen. –
Tun Sie einfach das Modal-Öffnen von dem ng-Klick der Menüleiste. Sie brauchen den Router dafür nicht –