Ich habe den Code so viel wie möglich gekocht. Etwas über verschachtelte Zustände und die Ereignisverarbeitung/-übertragung verursacht eine Endlosschleife. In Chrome kann ich es pausieren und sehen, dass es in Angulars $digest
Funktion für immer funktioniert. Irgendeine Idee warum? Ist es ein Fehler in meinem Beispielcode oder ein Fehler in Angular oder der UI Router?
<!doctype html>
<html ng-app='bugapp' ng-controller='BugAppCtrl'>
<head>
<script src='//code.jquery.com/jquery-1.10.1.min.js'></script>
<!-- Angular 1.2.11 -->
<script src='//ajax.googleapis.com/ajax/libs/angularjs/1.2.11/angular.js'></script>
<!-- UI router 0.2.8 -->
<script src='//cdn.jsdelivr.net/angular.ui-router/0.2.8/angular-ui-router.js'></script>
<script>
angular.module('bugapp', ['ui.router'])
.run(function ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
})
.config(function ($locationProvider, $stateProvider, $urlRouterProvider) {
$locationProvider.html5Mode(false);
$stateProvider
.state("root", {
abstract: true,
url: "/servletContext?asUser",
template: '<div ui-view></div>' // ???
})
.state("root.home", {
abstract: true,
url: "/home",
template: "<div ng-if='hasData()' ui-view ></div>"
})
.state("root.home.profile", {
url: "/profile",
template: '<div>whatever</div>'
})
})
.controller('BugAppCtrl', function ($scope, $state, $stateParams, $log, $location) {
$log.log('BugAppCtrl: constructor');
$scope.hasData = function() {
var res = !!$scope.foo;
// $log.log("hasData called, returing " + res + " foo is " + $scope.foo);
return res;
};
$scope.$on('$stateChangeSuccess', function() {
$log.log("State changed! (to " + $state.current.name + ")");
$scope.foo = 'junk';
$scope.$broadcast("resetfoo");
});
$state.go('root.home.profile');
});
</script>
</head>
<body>
<div ui-view></div>
</body>
</html>
zugreifen Das ist sehr hilfreich. Wenn Sie $ location anstelle von $ state verwenden, sind Sie auf diese Weise erfolgreich in einen Zustand mit Parametern übergegangen? –
Sieht so aus, als ob es möglich ist - ich habe es versucht und Informationen in meiner Antwort hinzugefügt. –
Für mich ist es das gleiche mit dem Standortpfad, ich gebe einige Ereignisse aus –