簡體   English   中英

參數...不是函數,未定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM