0

Call function from another Controller Angular Js

Call function from another controller Angularjs

http://tutorials.jenkov.com/angularjs/dependency-injection.html

I've been googling around and trying to adapt but I can't figure out. I have two files: home.js and auth.js. I created the file auth.js because I will need to call the functions inside of it in lot of files.

I can't create simple functions like:

function isAuthed(){
  return true;
}

Because I'll need to use some AngularJS modules, such as HTTP, therefore I believe I need to create a decent angular js file. For what I've read so far, in order to call a function from another controller the best and correct way is to use Services.

home.js

var app = angular.module('home', [
    'ngRoute'
]);

app.controller('home', ['$scope', 'authSERVICE', function($scope, authSERVICE){
    console.log(authSERVICE.hasCredentials());
}]);

auth.js

var app = angular.module('auth', []);

app.service('authSERVICE', ['$http', function($http){

    this.hasCredentials = function(){

        if(window.localStorage.getItem('email') != null && window.localStorage.getItem('password') != null){
            return true;
        }   
    }

    this.login = function(email, password){

        // Base64 function is from a simple JS file.
        var auth = Base64.encode('username:password');

        $http.get('http://localhost/project/api/webservice/getCategories', {

            headers: { 'Authorization': 'Basic ' + auth },
            params : {
                email: email,
                password: password,
            }

        }).success(function(response){

            return true;

        }).error(function(response){

            return false;

        }); 
    }
}]);

This does not work and I receive an error on console poiting to: https://docs.angularjs.org/error/$injector/unpr?p0=authSERVICEProvider%20%3C-%20authSERVICE I kind of understand what's the error information telling me. Although, I still need and want to have two different files.

EDIT: Btw, in the index.html file I've called the scripts:

<script type="text/javascript" src="application/controllers/home.js"></script>
<script type="text/javascript" src="application/controllers/auth.js"></script>
0

1 Answer 1

2

Thanks to @Ved answer I manage to figure it out. Solved.

var app = angular.module('home', [
    'ngRoute',
    'auth'
]);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.