2014-04-23 56 views
0

我是新來的角,但我有問題建立我的第一個應用程序。角控制器的定義 - undefined是不是一個函數

我在app.js下面的代碼:

// Declare app level module which depends on filters, and services 
angular.module('DiagsDashboard', ['DiagsDashboard.filters', 'DiagsDashboard.services', 'DiagsDashboard.directives', 'DiagsDashboard.controllers']); 

而且controller.js:

'use strict'; 

angular.module('DiagsDashboard.controllers', []) 
    .controller('EventCtrl', ['$scope', function (scope) { 

     scope.refreshButtonClicked = function() { 
      console.log("clicked!"); 
     } 
    }]) 

然而,當我穿上angular.module一個突破點,控制器功能沒有定義。

標記(MVC剃刀):

@{ 
    Layout = "~/Views/Shared/_LayoutAngular.cshtml"; 
} 

<div ng-app> 
    <div ng-controller="EventCtrl"> 
     <button ng-click="refreshButtonClicked">Refresh</button> 
    </div> 
</div> 

其產生以下HTML:

<!doctype html> 
<html ng-app="DiagsDashboard"> 
<head> 
    <meta charset="utf-8"> 
    <title>My AngularJS App</title> 
    <link rel="stylesheet" href="/css/app.css" /> 
</head> 
<body> 
    <ul class="menu"> 
     <li><a href="#/view1">view1</a></li> 
     <li><a href="#/view2">view2</a></li> 
    </ul> 





<div ng-controller="EventCtrl"> 
    <button ng-click="refreshButtonClicked()">Refresh</button> 
</div> 



    <div>Angular seed app: v<span app-version></span></div> 

    <script src="../lib/angular/angular.js"></script> 
    <script src="../js/app.js"></script> 
    <script src="../js/services.js"></script> 
    <script src="../js/controllers.js"></script> 
    <script src="../js/filters.js"></script> 
    <script src="../js/directives.js"></script> 

<!-- Visual Studio Browser Link --> 
<script type="application/json" id="__browserLink_initializationData"> 
    {"appName":"Chrome","requestId":"9f508d482b7a4ca2aca44a79b147fcec"} 
</script> 
<script type="text/javascript" src="http://localhost:13686/72a9c7832dd448f9b586b7c0f340112b/browserLink" async="async"></script> 
<!-- End Browser Link --> 

</body> 
</html> 

在鉻顯影劑控制檯顯示以下內容:

Uncaught TypeError: undefined is not a function controllers.js:4 
Error: Argument 'EventCtrl' is not a function, got undefined 
    at assertArg (http://localhost:63599/diagsdashboard/lib/angular/angular.js:954:17) 
    at assertArgFn (http://localhost:63599/diagsdashboard/lib/angular/angular.js:962:3) 
    at http://localhost:63599/diagsdashboard/lib/angular/angular.js:4699:9 
    at http://localhost:63599/diagsdashboard/lib/angular/angular.js:4306:17 
    at forEach (http://localhost:63599/diagsdashboard/lib/angular/angular.js:128:18) 
    at compositeLinkFn (http://localhost:63599/diagsdashboard/lib/angular/angular.js:4285:11) 
    at linkingFn (http://localhost:63599/diagsdashboard/lib/angular/angular.js:4002:14) 
    at linkingFn (http://localhost:63599/diagsdashboard/lib/angular/angular.js:4005:12) 
    at linkingFn (http://localhost:63599/diagsdashboard/lib/angular/angular.js:4005:12) 
    at http://localhost:63599/diagsdashboard/lib/angular/angular.js:3905:24 
+0

你能否加上你的標記? – thsorens

+0

添加了標記並由benek提出了改進建議。仍然沒有運氣,控制器功能仍未定義。 – jaffa

+0

嘗試將您的ng-app設置爲您的模塊名稱 – thsorens

回答

0

感謝所有幫助。但是我認爲這個問題是角的NuGet包

安裝,包裝AngularJsSeed

安裝角的早期版本。如果任何人都可以告訴我爲什麼早期版本不能獲得簡單的應用程序,我會很感激。

0

夫婦的東西:

1/

'])' 丟失:

.controller('EventCtrl', ['$scope', function ($scope) { 

    $scope.RefreshButtonClicked = function() { 
     console.log("clicked!"); 
    } 

}]) 

2 /我建議你使用一個文本編輯器一樣,完成 「崇高文本」()和[]爲您服務。

3 /對於你的瞭解,你可以這樣寫:

.controller('EventCtrl', ['$scope', function (toto) { 

    toto.refreshButtonClicked = function() { 
     console.log("clicked!"); 
    } 

}]) 

角將只考慮在功能,不是名稱的參數的順序。

4 /語法功能($範圍)不縮小安全。 ['$ scope',function(scope)]是小型化安全的。

5 /會議代碼:「refreshButtonClicked」與小寫首字母爲函數/方法。

+0

謝謝,我做了改進。 – jaffa

相關問題