AngularJS 控制器在注入工厂时抛出错误

AngularJS controller throwing an error while injecting factory

我是 Angular 的新手,我正在构建我的第一个 angular 应用程序。我有我的投资组合网页,我想从外部来源获取数据并将其提供给所有控制器。

这就是我要 html:

<!DOCTYPE html>
<html ng-app="portfolioApp">
<head lang="en">
    <meta charset="UTF-8">
    <title>Mithun Mathew</title>
    <link rel='shortcut icon' href='images/favicon.ico' type='image/x-icon'/>
    <link rel="stylesheet" href="styles/style.css" type="text/css">

    <!-- Angular Import-->
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>

    <!-- Angular Main Module -->
    <script type="text/javascript" src="portfolioApp.js"></script>

    <!-- Angular Controllers -->
    <script type="text/javascript" src="controllers/dataRetrieve.js"></script>



</head>
<body ng-controller="FirstCtrl">

<me></me>

</body>
</html>

我的js文件: portfolioApp.js

angular.module('portfolioApp',[])
.factory('Data', ['$scope', '$http', function DataFactory ($scope, $http) {
    var dataCtrl = this;

    $http({
        method: 'GET',
        url: 'http://someurl/'
    }).success(function (data) {
        dataCtrl.data = data;
        console.log(data);
    }).error(function (error) {
        console.log("Hey! Something went wrong while loading.  :(");
    });


    return function(){
        return dataCtrl.data;
    }
}]);

dataRetrieve.js

angular.module('portfolioApp',[])
    .controller('FirstCtrl', function(Data) {
        console.log('Hello');
        console.log(Data());
    });
当我将数据注入控制器时,

Angular 抛出一个错误。我该如何克服这个问题?我用谷歌搜索,观看了 YouTube 视频和 CodeSchool,但无法弄清楚为什么会抛出错误。

请注意,当您创建与 [] 同名的第二个新模块时,第一个模块将被覆盖。

例如:

你创造

angular.module('portfolioApp',[]).factory('....

angular 将创建一个名为 portfolioApp 的新模块,因为模块名称后有 []

然后

angular.module('portfolioApp',[])
.controller('FirstCtrl',....

你尝试用 [] 创建一个与之前同名的模块,所以 angular 会用这个模块覆盖第一个模块,所以你之前的模块此时已经不存在了,所以有没有工厂叫 Data

所以只需从第二个模块声明中删除 [] 然后 angular 将不会覆盖前一个模块而是 angular 将扩展模块,

angular.module('portfolioApp')
    .controller('FirstCtrl', fu...