Angularjs - 将服务代码移动到另一个文件

时间:2017-09-04 09:27:51

标签: javascript angularjs angularjs-service

我有代码,

<script> 
var MyApp = angular.module("MyApp", ['mc.resizer','chart.js'])
MyApp.controller('Ctrl1', function ($scope, $http,MyService) {
        MyService.EnvDetails().then(function success(data){
            $scope.httpdata = data;
            }, function error(err){
                console.log("error found"); return err; 
            });
});
</script> 

并尝试将服务代码保存在另一个文件夹中的另一个javascript文件中,例如

var MyApp = angular.module("MyApp", []);
MyApp.service('MyService', function($http) {
    this.EnvDetails = function() {
         return $http({
                    url: '/myurl'                    
        }).then(
            function successCallback(response) {
                //Some Code
                return //Some;
            }, function errorCallback(response) {                
                return response;
            }
        );
    };  
});

将此代码保存在&#34; MyService.js&#34;并将此文件称为

<script type="text/javascript" src="javascripts/MyService.js"></script>

这给了我错误,

  

angular.js:11607错误:[$ injector:unpr]未知提供商:   getEnvDetailsS​​erviceProvider&lt; - getEnvDetailsS​​ervice&lt; - Ctrl1

但是当我将服务代码放在同一个文件中时(第一行除外,var mainApp = angular.module(&#34; mainApp&#34;,[]);),以及控制器代码,它可以工作。我很无能,我错过了参考。请帮忙。

谢谢

2 个答案:

答案 0 :(得分:1)

当您保存到另一个文件时,无需再次添加模块化声明,

删除依赖项

//remove this line var MyApp = angular.module("MyApp", []);
MyApp.service('MyService', function($http) {
    this.EnvDetails = function() {
         return $http({
                    url: '/myurl'                    
        }).then(
            function successCallback(response) {
                //Some Code
                return //Some;
            }, function errorCallback(response) {                
                return response;
            }
        );
    };  
});

答案 1 :(得分:0)

var MyApp = angular.module("MyApp", []);

此行创建新模块。你应该只调用一次。 在其他文件中只需使用:

var MyApp = angular.module("MyApp");

获取当前现有的模块。