gentos gentos - 5 months ago 8
AngularJS Question

angularJs, $rootScope.$emit() returns an object of data

I am trying to expose a response from the service to the controller via $rootScope.$emit('name', response.data), but it doesn't work.

My service:

/**API Post for user login*/
function login(username,password){
return $http.post('/api/login/',{
username:username,
password:password
}).then(loginSuccessFn, loginErrorFn);

function loginSuccessFn(response, status, headers, config){
Authentication.setAuthenticatedAccount(response.data);

window.location = '/';
}
function loginErrorFn(response, status, headers,config){
$rootScope.$emit('errorLogin', response.data);
}

}


My Controller:

//Catching the Authentication.login errorFNn response.data
$rootScope.$on('errorLogin', function(p){
vm.isSuccess = p;
})


and this is what happens in the view:


{"name":"errorLogin","targetScope":"$SCOPE","defaultPrevented":false,"currentScope":null}


can someone help me out

Answer

Change:

$rootScope.$on('errorLogin', function(p){
    vm.isSuccess = p;
});

To:

$rootScope.$on('errorLogin', function(e, p){
    vm.isSuccess = p;
});
Comments