I'm having trouble with getting my custom angular service to work.
My service is as follows:
app.service('userService', function(){
var user = [];
var setUser = function(newObj){
user.push(newObj);
};
var getUser = function(){
return user;
};
return {
setUser: setUser,
getUser: getUser
};
});
app.config(function($routeProvider,$locationProvider) {
$routeProvider
.when('/', {
templateUrl : 'views/home.html',
controller : 'indexController'
})
.when('/me.html', {
templateUrl : 'views/me.html',
controller : 'meController'
});
// Get rid of the additional default pound sign during routing
$locationProvider.html5Mode(true);
});
I call it as follows
app.controller('indexController', function($http,userService) {
...
$http.post("somewhere")
.then(function(response){
userService.setUser({test: "test});
location="/me.html";
}
.then(function(response){
userService.setUser({test: "test});
location="/me.html";
})
});
When I do a console.log in another controller, it returns an empty array. What am i messing up?
app.controller('meController',function($http,userService){
console.log(userService.getUser()); => returns an empty array []
});
EDIT Some of my code was vague, added my routes section, should be a little more clear. EDIT 2 Forgot to mention, if I stick in console.log(userService.getUser()) in the line after I setUser(), it correctly displays the data.
i.e.
$http.post("somewhere")
.then(function(response){
userService.setUser({test: "test});
location="/me.html";
}
.then(function(response){
userService.setUser({test: "test});
location="/me.html";
console.log(userService.getUser()); => correct output
})