Ich verwende Angular-Routing in meinem Code, für die folgende ist der Code Snippet. Problem ist, dass der Hauptcontroller zweimal aufgerufen wird. Ich habe mich bereits darum gekümmert, es im Markup nicht mehr zu deklarieren (wie überall empfohlen). Ich vermute, dass in meinem Routing-Code etwas nicht stimmt.Controller zweimal aufgerufen in AngularJS
app.directive('routeLoadingIndicator', function ($rootScope,$timeout) {
return {
restrict:'E',
link:function(scope, elem, attrs){
scope.isRouteLoading = false;
$rootScope.$on('$routeChangeStart', function(){
scope.isRouteLoading = true;
});
$rootScope.$on('$routeChangeSuccess', function(){
$timeout(function(){
scope.isRouteLoading = false;
}, 10);
});
}
};
});
HTML:
<route-loading-indicator >
<div class="spinner" ng-if='isRouteLoading'>
<div class="rectLoader"></div>
</div>
<div class="right_col" ng-if='!isRouteLoading' style="padding-top: 60px;" ng-view>
</div> </route-loading-indicator>
Controller:
app.controller('main', function($scope,$routeParams,$rootScope){
console.log("main Controller");
});
Routing-Code:
app.config(function($routeProvider) {
$routeProvider
.when("/", {
templateUrl : "xyz.html",
controller : "main"
})
});
können Sie das Problem in einer Geige –
Stellen Sie ein komplettes, minimal Beispiel reproduziert das Problem neu zu erstellen. Enthalten Sie alle notwendigen Dinge und schließen Sie alle relevanten Dinge aus (wie zB Ihren routeLoadingIndicator). –
Der Code funktioniert einwandfrei. Überprüfen Sie das https://jsfiddle.net/ebinmanuval/c8u34s37/ –