2015-01-14 67 views
-1

我在學習AngularJS,並在實現控制器時遇到了這個錯誤。AngularJS:參數'Ctrl'不是一個函數,沒有定義

有人能指出什麼是錯的嗎? (因爲它在教程的表示,除非某些功能被棄用完全按照這個?)

我收到以下錯誤: Argument 'Ctrl' is not a function, got undefined

HTML

<!DOCTYPE html> 
<html ng-app> 
<head lang="en"> 
<meta charset="UTF-8"> 
<title>AngularJS Controller</title> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"> </script> 

</head> 
<body> 
<div ng-controller="Ctrl"> 
    <input ng-model="name"> 
    <input ng-model="age"> 
    <h1>{{ name }}</h1> 
    <h1>{{ age }}</h1> 
</div> 

<script> 
    var Ctrl = function($scope) { 
     $scope.name = "Noob"; 
     $scope.age = "21"; 
    }; 
</script> 

+0

相似的問題:http://stackoverflow.com/questions/19408011/angularjs-error-argument-firstctrl-is-not-a-function-got-undefined?rq=1 – zakangelle

+3

做他們仍然支持*「功能作爲控制器」* 1.3的東西?也許嘗試使用完整的'angular.module(...).control(function($ scope){...})'東西。另外,您錯過了'$ scope'參數 – Phil

+1

準確地說:將控制器定義爲全局函數的舊方法已被棄用,您必須選擇使用它(請參閱controllerProvider.allowGlobals()](https:// docs。 angularjs.org/api/ng/provider/$controllerProvider))。按照菲爾的建議去做。 –

回答

6

正如我知道你需要使用module.controller方法定義控制器。例如,命名您的應用程序作爲對myApp

<html ng-app="myApp"> 

和JS部分將是:

angular.module('myApp', []) 
    .controller('Ctrl', ['$scope', function($scope) { 
     $scope.name = "Noob"; 
     $scope.age = "21"; 
    }]); 
+0

是的,我同意。這不是必需的 – Rodion

+0

謝謝。這有效,嘗試了所有其他解決方案,仍然有相同的錯誤。 – Kincsem

+0

不好意思,這個**在1.3中是**必需的,除非你在'controllerProvider'上設置'allowGlobals',如上面在註釋 – Phil

1

您需要定義您的應用程序

var myApp = angular.module('myApp',[]); 

和$範圍傳遞到您的控制器

var Ctrl = function($scope) { 

這是一個fiddl e鏈接那些變化:http://jsfiddle.net/fxk7mtb7/

+0

也許你可以詳細說明一下嗎?因爲什麼時候做這些事情,它的工作原理如下:http://jsfiddle.net/fxk7mtb7/ –

+0

已經嘗試過你的解決方案,並且仍然得到相同的錯誤,即使它在JSFiddle上工作。 – Kincsem

+0

我在JSFiddle中犯了同樣的錯誤,並使用了Angular 1.2。它在1.3中是(破碎的) - http://jsfiddle.net/fxk7mtb7/1/ – Phil

相關問題