2015-06-01 110 views
2

我加入一個指令到我的網站時,遇到下列錯誤,當控制器是不確定的:在角:增加一個指令

Error: [ng:areq] Argument 'MainController' is not a function, got undefined 

僅發生的錯誤,當我包括歡迎-指令(welcome.js)我現場。如果導入已被刪除,則控制器工作。

身體我的index.html

<body ng-app="my-app"> 
    <div ng-controller="MainController"> 
    <welcome></welcome> 
    </div> 

    <!-- Angular --> 
    <script src="bower_components/angular/angular.js"></script> 
    <script src="js/app.js"></script> 
    <script src="js/controllers/mainController.js"></script> 
    <!-- Without this line the controller works --> 
    <script src="js/directives/welcome.js"></script> 
</body> 

的app.js

(function() { 
    var app = angular.module('my-app', []); 
})(); 

mainController.js

angular.module('my-app', []) 
    .controller('MainController', ['$scope', function($scope) { 
    console.log('Controller working'); 
    }]); 

welcome.js

angular.module('my-app', []) 
    .directive("welcome", function() { 
    return { 
     restrict: "E", 
     template: "<div>Test test.</div>" 
    }; 
    }); 

回答

6

您正在重新定義模塊。只定義模塊一次。

當作爲angular.module('my-app', [])使用時,它定義了模塊只能使用一次。當你想要檢索它。然後用angular.module('my-app')

使用

angular.module('my-app') //Notice remove [] 
    .directive("welcome", function() { 
    }); 
+1

。 –

+0

謝謝,就是這樣!當我沒有依賴關係時,是否總是省略括號? – fwind

+0

@fwind,您需要在整個應用程序中定義模塊一次,並且在模塊級別具有任何依賴關係。 – Satpal

3

傳遞第二個參數是這樣angular.module('my-app', [])創建一個新的模塊,用它只有一次。

以檢索一個模塊使用var module = angular.module('my-app'),並在控制器和指令定義都使用module.controller(...module.directive(....等,