Ich kann nicht meinen Kopf wickeln, ich habe wirklich Probleme mit ui-route
und $stateChangeSuccess
und $watch
, bekam zwei Probleme. Ich versuche, einen Wert eines Parameters zu ändern, wenn ich die state
ändere, klicken Sie auf eine URL. Ich denke, es ist wichtig zu wissen, dass ich Unterzustände verwende. Mit meiner aktuellen Einstellung bekomme ich, dass die $stateChangeSuccess
zweimal beim Laden auslöst, was bedeutet, dass sie den Wert sofort setzt. Was ich versuche zu tun ist, es nur auf Änderung der URL gesetzt zu haben.
Meine Route wie folgt aussieht, ich versuche, den Wert eines Parameters
.state('medications', {
url: '/medications',
templateUrl: '/partials/home.html',
controller: 'mainController',
params: { showSection: false },
resolve: {
postPromise: ['medicationservice', function(medicationservice) {
return medicationservice.getAll();
}]
}
})
.state('medications.add', {
url: '/add',
templateUrl: '/partials/home.html',
controller: 'mainController',
params: { showSection: true },
})
in meinem Controller zu setzen habe ich folgenden, wo ich die openSesame
Parameter false
explizit auf init
gesetzt, sondern als beschrieben es auslöst und setzt es auf true
.
mainModule.controller('mainController', [
'$scope',
'$state',
'$rootScope',
'medicationservice',
function($scope, $state, $rootScope, medicationservice) {
$scope.medication = {};
$scope.medications = medicationservice.posts;
$scope.openSesame = false;
$rootScope.$on("$stateChangeSuccess", function() {
$scope.openSesame = true;
console.log($scope.openSesame);
});
}]);
in my plunker die Zustandsänderung funktioniert einmal, das ist, wenn ich die $rootScope
verwenden.
Sie möchten den Parameter 'showSection' bei einer Zustandsänderung ändern? – inspired
Ja, im Grunde möchte ich den Parameter 'showSection' verwenden, um' $ scope.openSesame' @inspiriert zu setzen. –
ok loot bei meiner aktualisierten Antwort und [bottker] (https://plnr.rc/edit/zQxIhI6GKmKBY1bn4WSf?p=preview) – inspired