2015-03-31 84 views
1

我是Angular的新手,我正在構建我的第一個角度應用程序。我有我的投資組合網頁,我想從外部來源獲取數據並將其提供給所有控制器。AngularJS控制器在注入工廠時拋出錯誤

這是我對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()); 
    }); 

角拋出我的錯誤時我將數據注入控制器。我如何克服這個問題?我搜索了一下,觀看了YouTube視頻和CodeSchool,但無法弄清楚爲什麼會出現錯誤。

+0

什麼錯誤?我沒有看到一個 – Phil 2015-03-31 04:58:06

+0

菲爾,我無法正確使用工廠。我認爲有一個問題,我將數據工廠注入FirstCtrl – Matt 2015-04-01 03:03:13

回答

2

請注意,當您使用[]創建第二個具有相同名稱的新模塊時,第一個模塊將會覆蓋。

爲前:

創建

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

角度將創建一個因爲有[]模塊名稱後調用portfolioApp新的模塊。

然後

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

嘗試與之前創建具有相同名稱的模塊[]這樣的角度將覆蓋這一個第一模塊,讓你的前一個模塊是沒有更多的在這個時候,所以沒有工廠稱爲Data

所以簡單地從第二模塊聲明然後除去角將[]不會覆蓋以前的模塊,而不是角意願延伸模塊,

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

感謝您的快速響應。我試過了,但仍然無法使用console.log(Data())獲取數據。 我在將數據注入控制器時出現錯誤。我是否缺少別的東西?感謝您的幫助提前。 – Matt 2015-04-01 02:59:04

+0

從工廠中刪除'$ scope'注入。 :)這裏是一個演示。用控制檯檢查http://plnkr.co/edit/hdNJWe237IgDPBZ4YKab?p=preview – 2015-04-01 04:00:47