2015-09-15 93 views
0

我目前正在做egghead.io AngularJS課程,並遇到一些其他人似乎有問題。 我遇到的任何解決方案都不適合我。 在第二個視頻中,教師正在展示如何將控制器連接到ng-apps。我完全按照視頻,重新啓動了幾次,並在這裏嘗試瞭解決方案。 我提示以下錯誤控制檯:AngularJS錯誤:參數'FirstCtrl'不是一個函數,得到undefined

Error: 'FirstCtrl' is not a function, got undefined

在錯誤有一長串,我已經認出了第一的話說:

「FirstCtrl」不是一個函數,得到了不確定「

任何人都知道解決方案嗎? 在分配控制器方面Angular spec中有所改變,或者這個過程跳過了信息嗎?使用

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

//The controller in the myApp module, first param is the controller's name 
//Second is the controller's dependencies 
app.controller('FirstCtrl', ['$scope', function($scope) { 
    //Do whatever you want in this controller 
    $scope.data.message = 'Hello!'; 
}]); 

然後您將控制器綁定到視圖(你的HTML):

代碼:

function FirstCtrl($scope) { 
 
    $scope.data = { 
 
    message: "Hello" 
 
    }; 
 
}
<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>My Angular App</title> 
 
    <link href='https://fonts.googleapis.com/css?family=Roboto|Roboto+Condensed:700' rel='stylesheet' type='text/css'> 
 
</head> 
 

 
<body> 
 
    <div ng-app=""> 
 
    <div ng-controller="FirstCtrl"> 
 
     <h1>You said:</h1> 
 
     <h3>{{data.message}}</h3> 
 
    </div> 
 
    </div> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script> 
 
</body> 
 

 
</html>

+0

嘿馬克 - 看起來你真的沒有設置控制器 - 只是一個功能。看看這個頁面,看看你將如何添加一個控制器到你的角度應用程序:https://docs.angularjs.org/guide/controller – IfTrue

+0

你是否聲明你的模塊並把你的控制器放在那裏? – fasfsfgs

+0

據我所知app.controller();用來代替函數firstctrl()。 – razorranjan

回答

1

這裏是你的爲例工作(運行例...)。

  1. 添加您的應用程序名稱。
  2. 使用angular.controller聲明您的控制器。

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

 
angular.module('myApp').controller('FirstCtrl', FirstCtrl); 
 

 
function FirstCtrl($scope) { 
 
    $scope.data = { 
 
    message: "Hello" 
 
    }; 
 
}
<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>My Angular App</title> 
 
    <link href='https://fonts.googleapis.com/css?family=Roboto|Roboto+Condensed:700' rel='stylesheet' type='text/css'> 
 
</head> 
 

 
<body> 
 
    <div ng-app="myApp"> 
 
    <div ng-controller="FirstCtrl"> 
 
     <h1>You said:</h1> 
 
     <h3>{{data.message}}</h3> 
 
    </div> 
 
    </div> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script> 
 
</body> 
 

 
</html>

0

角控制器這樣定義ng-controller屬性。

0

您錯過了定義控制器的部分。

你絕對可以讓你的FirstCtrl成爲一個函數。你只需要首先定義FirstCtrl是一個控制器。

例子:

angular.module("app").controller("FirstCtrl", FirstCtrl); 

然後你有你的FirstCtrl功能:

function FirstCtrl($scope) { 
    $scope.data = { 
    message: "Hello" 
}; 
} 

您還需要包含這個文件在你的HTML腳本

<script src="mypath/firstctrl.js"></script> 
0

時就像一個簡單的JavaScript函數定義控制器,然後我降級的CDN鏈接版本角從「1.4.5」到「1.2.28我也被面臨的問題「它開始識別控制器(一個簡單的JavaScript函數)。你也必須在你的html文件中包含你創建你的控制器的.js文件。實際上,他們已經不贊成使用簡單的JavaScript函數作爲角度1.3版本的控制器。

相關問題