2017-09-04 43 views
0

Angularjs - 移動服務代碼,我有這樣的代碼另一個文件

<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; 
      } 
     ); 
    }; 
}); 

保存此代碼在「MyService.js」中,並將此文件引用爲

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

這是給我的錯誤,

angular.js:11607 Error: [$injector:unpr] Unknown provider: getEnvDetailsServiceProvider <- getEnvDetailsService <- Ctrl1

但是,當我在同一個文件把服務代碼(除第一行,VAR = mainApp angular.module( 「mainApp」,[]);),與控制器代碼一起,它的工作原理。我很無能,我錯過了參考。請幫忙。

感謝

回答

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; 
      } 
     ); 
    }; 
}); 
+0

按照建議,但仍然出現錯誤。 angular.js:11607錯誤:[$ injector:unpr]未知的提供者:MyServiceProvider < - MyService < - Ctrl1 – sand

+0

你有沒有在html中引用? – Sajeetharan

+0

我錯過了,但啓用後,現在我得到兩個錯誤。 1.未引用的ReferenceError:MyApp未在MyService.js中定義:1。和2.angular.js:11607錯誤:[$ injector:unpr]未知的提供者:MyServiceProvider < - MyService < - Ctrl1 – sand

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

該行創建新的模塊。您應該只調用一次。 在其他文件只需使用:

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

爲了讓現有的模塊。

相關問題