[英]Argument … is not a function, got undefined
我正在使用AngularJS,但我收到一條錯誤消息: Argument 'Controller' is not a function, got undefined
這里是JSFiddle和HTML代碼:
<h2>Hata's Tree-Like Set</h2>
<div ng-app ng-init="N=3;" ng-controller="Controller">
<input type="range" min="1" max="10" step="1" ng-model="N">
<div class="tree"></div>
</div
然后我在JavaScript中定義了Controller
函數,由於某種原因沒有注冊。
function Controller($scope){
$scope.$watch("N", function(){ ... });}
我有完全相同的錯誤: argument 'HelloCtrl' is not a function
,未定義。
原來我的hello.js
文件中有一個語法錯誤...數組定義中缺少逗號,在HelloCtrl()
。
我添加了逗號,然后一切都開始工作了!
希望這可以幫助。
我有同樣的錯誤...參數'RadioController'不是函數...
我在HTML中引用了控制器錯誤。 我有
data-ng-controller="RadioController"
什么時候應該
data-ng-controller="Radio.RadioController"
('Radio'是Controller所在的模塊)
在你的小提琴選項中,你選擇執行你的javasctipt onLoad
。 使用onLoad
選項,您的javascript將添加到window.onLoad
函數中:
window.onload=function(){
function Controller($scope){
...
}
}
因此,angular無法訪問您的代碼,因為它位於閉包中。
使用no wrap
選項,您的代碼將直接添加到頁面中,並且可以通過angular: JSFiddle訪問。
您可以瀏覽源代碼以查看其工作原理。
您可以定義控制器並在一個步驟中注冊它:
angular.module('myModule').controller('MyCtrl', function($scope) {
$scope.$watch ....
});
如果希望代碼在縮小后正常工作,則必須明確指定對$ scope的依賴:
angular.module('myModule').controller('MyCtrl', ['$scope', function(s) {
// you can now name the $scope argument whatever you want
...
}]);
我也很難過。 我的問題的原因是我有一個舊版本的Angular不支持新as
別名。
確保您擁有支持as
的最新版Angular。
你是否正確配置了$ controllerProvider?
從文檔 :
使用當前$ controllerProvider注冊的構造函數的名稱或當前作用域上的表達式求值為構造函數。
通過指定ng-controller =“as propertyName”,可以將控制器實例發布到scope屬性中。
如果當前的$ controllerProvider配置為使用全局變量(通過$ controllerProvider.allowGlobals() ),這也可能是全局可訪問的構造函數的名稱(不推薦)。
好吧,我成功地通過降級到傳統角度JS(1.2.27)來解決這個錯誤。
用於定義控制器和角度JS(1.3.2)的相同語法(您已在上面使用過)是導致此錯誤的組合。
使用angular(1.3.2),以下語法為我工作。
var app = angular.module('dummyApp', []);
app.controller('helloController', function($scope){
<write statements here>
});
無需降級到舊版本。 您可以同時使用as方法或angular.module方法。
加載文件的順序也必須正確。
( 如果您很難記住加載文件的順序,請考慮使用js )
我不得不重新訂購腳本標簽。 我把控制器放在比它依賴的另一個更高的位置。
花了我幾個小時,希望這有助於其他人
我有這個錯誤 - 我的控制器名稱錯了。
它被注冊為CallbacksController ...花了我五分鍾的咒罵來發現案件差異(暗示 - 在我的情況下是資本B!)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.