正确使用自定义angularjs服务,函数未定义错误

时间:2014-05-30 09:48:41

标签: javascript angularjs

我为一些util方法创建了自己的服务。我的想法是简单地将utilsservice注入我需要方法的模块中。问题是我得到了一个ReferrenceError:未定义myFunction。

我认为这与错误的服务注入有关,但我无法弄清楚自己的方法有什么不对。

我所做的服务:

angular.module('utils',[]).service('UtilsService',function(){

    this.myFunction = function(){};  

});

在我的app.js文件中,我有以下结构:

(function(){
    angular.module('utils',[]);
    angular.module('translation',[]);

    var app = angular.module('myApp',['translation','utils']);
    app.controller('myController',['$http',function($http,UtilsService){

        UtilsService.myFunction();

    }]);
});

我在.html文件中包含脚本的顺序:

<script type="text/javascript" src="../Libraries/angular.min.js"></script>
<script type="text/javascript" src="../js/angular-js/services/utilService.js"></script>
<script type="text/javascript" src="../js/angular-js/app.js"></script>
<script type="text/javascript" src="../js/angular-js/translate.js"></script>

我已经尝试更改订单,但它没有任何区别。

我很感谢您的任何建议!

1 个答案:

答案 0 :(得分:4)

请尝试以下方法。您需要更改脚本引用以指向您拥有它们的文件。加载index.html文件后,您应该看到输出&#34;您调用了myFunction()&#34;在控制台窗口中。这是从服务中打印出来的,表明它被正确调用。我还创建了fiddle

的index.html:

<!doctype html>
<html lang="en" ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>Directives</title>
    </head>
    <body>

        <div ng-controller="myController"></div>

        <script src="angular.js"></script>
        <script src="app.js"></script>
        <script src="utilsService.js"></script>
    </body>
</html>

app.js(我已经将代码移出你创建的函数,因为它还没有工作。另外,你有一个拼写错误的拼写anguar在以var app开头的行上。我也删除了由于我没有按照该名称创建任何模块,因此我的代码中的翻译依赖性:

(function(){
    //angular.module('utils',[]);
    //angular.module('translation',[]);


});

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

app.controller('myController',['$scope', 'UtilsService',function($scope,UtilsService){

    UtilsService.myFunction();

}]);

utilsService.js:

angular.module('utils',[])
.service('UtilsService',function(){

    this.myFunction = function(){ console.log ('you called myFunction()')};  

});