2016-04-14 8 views
0

Ich habe service.js, in der Authentifizierung place.On Erfolg Service Callback-Funktion nimmt von controller.js

Dienst ausgeführt wird. js:

'use strict'; 
angular.module('Authentication') 
.factory('AuthenticationService', ['$http', '$cookieStore', '$rootScope','$timeout', '$location', '$window', 
function ($http, $cookieStore, $rootScope, $timeout, $location, $window) { 
     var service = {}; 


     service.Login = function (username, password, callback) { 

      $http.post('..json', { 
        headers: { 
         username: username, 
         password: password 
        } 
       }) 
       .success(function (data, status, headers, config) { 
        $timeout(function() { 
         callback(status); 

        }, 1000); 
       }); 
     }; 
     return service; 
}]) 

controller.js:

'use strict'; 
angular.module('Authentication').controller('LoginController', ['$scope', '$rootScope', '$location', 'AuthenticationService', '$http', '$timeout', '$window', 
function ($scope, $rootScope, $location, AuthenticationService, $http, $timeout, $window) { 

**$scope.name=true;** 
     $scope.login = function() { 
      AuthenticationService.Login($scope.username, $scope.password, function (response) { 
       if (response === 'Success') { 
        $http.get('..json').success(data,status,headers,config){ 
        **$scope.value=true;** 
        }) 

       } else { 
        alert("Error"); 
       } 
      }); 
     }; 
}]); 

HTML:

I haben 2 Kontrollkästchen mit zwei $ scope Variable von Controller- $ scope.name verbunden und seit $ scope.value

<input type="checkbox" ng-checked="name"> abc 
    <input type="checkbox" ng-checked="value">xyz 

Nun sind beide $ scope Variable auf true gesetzt ist sowohl Kontrollkästchen zunächst geprüft werden sollte .... aber die Checkbox mit $ scope.name wird geprüft und $ scope.value ist nicht markiert

Jede Idee, warum dies geschieht und wie kann ich das zweite Kontrollkästchen machen auch zunächst überprüft, basierend auf der $ scope.value

+0

Sie sagten "beide $ Scope-Variable ist auf True gesetzt", aber die Art, wie ich es sehe, $ scope.value ist nur wahr ist die Anmeldung erfolgreich, oder? –

+0

Ja, das ist richtig, also nach dem Login sollte das Kontrollkästchen aktiviert sein, aber ist nach dem Login deaktiviert .. Diese Checkboxen sind in HTML-Datei, die nach dem Login –

+0

vielleicht die Anmeldung gerade nicht passiert. Wenn Sie wollen, dass beide zuerst überprüft werden, verschieben Sie den "$ scope.value = true" direkt nach $ scope.name = true –

Antwort

0

here ist eine funktionierende Version, fast genau so wie Ihr ursprünglicher Code, das einzige was ich sehe könnte falsch sein, ist if (response === 'Success') , weil in meinem Beispiel Code, der status in .success(data,status,headers,config) ist eine Nummer nicht String wie "Erfolg", überprüfen Sie auch dieses offizielle Dokument here.

+0

'if (response === 'success')' funktioniert wie andere Sachen innerhalb es ausgeführt wird, nur diese $ scope variabale ist nicht zugänglich in ng-init oder ng-checked –

+0

haben Sie versucht, log $ scope.value zu trösten nachdem es zugewiesen wurde? Gibt es den richtigen Wert in der Konsole zurück? –

+0

Ja gibt es den richtigen Wert in der Konsole ... es funktioniert gut in js ... sogar eine Warnung zeigt den richtigen Wert –

Verwandte Themen