eckig $locationChangeStart nicht immer ordnungsgemäß aufgerufen, was tun?

Arbeite ich auf MEINE app, die basierend auf Brian Ford eckig-express-blog-app ist auf GitHub.

Das problem das ich habe ist, dass ich in der Lage sein müssen meine UserService service auf $locationChangeStart, um zu überprüfen, ob ein Benutzer angemeldet. Die meisten der Beispiele, die ich sehen, haben Sie die Einstellung $rootScope.$on('$locationChangeStart'... in der Modul-Deklaration. Dieses erlaubt mir nicht den Zugriff auf meine Kunden-service, also meine Lösung war, um es in einem controller und rufen Sie es in meine Haupt-layout-Datei.

Ich habe es eingerichtet wie so, aber die app tut nichts. Es doesn ' T sogar Aufruf zu einem Fehler. Können Sie sich vor Ort das problem mit diesem code?

Hier ist mein github repo.

LayoutCtrl.js:

angular.module('myApp').
    controller('LayoutCtrl', function($scope, $http, UserService) {
        $scope.$on( "$locationChangeStart", function(event, next, current) {
            if ( UserService.getUser() === null ) {
        //no logged user, we should be going to #login
                if ( next.templateUrl == "partials/login.html" ) {
          //already going to #login, no redirect needed
                } else {
          //not going to #login, we should redirect now
                $location.path( "/login" );
                }
            }         
        });
    });

Layout.jade:

doctype html
html(ng-app="myApp", ng-controller='LayoutCtrl')
  head
    meta(charset='utf8')
    base(href='/')
    title Angular Express Seed App
    link(rel='stylesheet', href='/css/app.css')
  body
    block body

Und UserService.js:

angular.module('myApp').
    service('UserService', function(){
        var $scope = this;
        var user = null;
        $scope.user = {};

        $scope.setUser = function(data){
                user = data;
        };
        $scope.getUser = function(){
                $scope.user = user;
        };

        return $scope;
  });
  • kannst du bitte posten Sie Ihre gesamte Anwendung. Einschließlich aller html/js neccecary
  • Ich habe den relevanten code, da es eine Menge von code. Gibt es irgendetwas in bestimmten die Sie denken, die könnte ich kopieren/einfügen aus dem github-repo (in der post)?
  • angular.js version?
  • Ah, es ist 1.0.3, die ist Total veraltet... ich davon ausgegangen, dass der Mann, der aus der Samen-app behalten es aktualisiert, da er für google arbeitet und alle. Danke!!! Aber ich bin mit dem gleichen problem.
  • Haben Sie versucht, um den code in die app.laufen blockieren ?
  • Können habe ich, dass außerhalb der app-module-Deklaration-Datei? Weil ich hatte ein problem wegen meiner custom-service.
  • können Sie injizieren services in den run-Blöcke...
  • ja, aber nichts in den app-Modul-Deklaration ausgeführt wird, bevor der service tatsächlich erstellt wird.
  • Sie sind falsch, service ist nie instanziiert werden, bevor es sich das erste mal gespritzt werden. wenn Sie Ihren Lauf-block deklariert einen service als Abhängigkeit dann die erste dieser service wird instanziiert werden, und nur dann würde injiziert werden, um den block laufen, das ist, was dependency injection ist alles über es nicht?!.

InformationsquelleAutor Rorschach120 | 2014-01-08
Schreibe einen Kommentar