从另一个文件AngularJS中的另一个Controller调用函数

时间:2014-12-31 11:32:30

标签: javascript angularjs cordova

Call function from another Controller Angular Js

Call function from another controller Angularjs

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

我一直在谷歌上搜索并试图适应,但我无法弄清楚。 我有两个文件:home.jsauth.js。我创建了文件auth.js,因为我需要在很多文件中调用它内部的函数。

我无法创建简单的功能,如:

function isAuthed(){
  return true;
}

因为我需要使用一些AngularJS模块,比如HTTP,所以我相信我需要创建一个像样的角度js文件。 对于我到目前为止所读到的内容,为了从另一个控制器调用函数,最好和正确的方法是使用服务

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;

        }); 
    }
}]);

这不起作用,我在控制台上收到错误:https://docs.angularjs.org/error/$injector/unpr?p0=authSERVICEProvider%20%3C-%20authSERVICE 我有点理解告诉我的错误信息是什么。虽然,我仍然需要并希望拥有两个不同的文件。

编辑:顺便说一句,在index.html文件中,我称之为脚本:

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

1 个答案:

答案 0 :(得分:2)

感谢@Ved的回答,我设法弄清楚了。的解决

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