web-dev-qa-db-ja.com

エラー:[ng:areq]引数 'MyCtrl'は関数ではなく、未定義です

私はAngularjsが初めてで、チュートリアルに従っていましたが、タイトルにエラーがありました。

HTMLコード:

<div data-ng-app="myApp">
    <div data-ng-controller="MyCtrl">
    <form>
        <table>
        <tr style="font-weight: bold">
          <td>ID</td>
          <td>Name</td>
          <td>Surname</td>
          <td>House</td>
          <td>Address</td>
          <td>Locality</td>
          <td>Contact</td>
          <td>Contact 2</td>
          <td>Contact 3</td>
          <td>Reply</td>
          <td>Edit</td>
        </tr>
        <tr data-ng-repeat="person in persons">
            <td>{{person.ID}}</td>
            <td>{{person.Name}}</td>
            <td>{{person.Surname}}</td>
            <td>{{person.House}}</td>
            <td>{{person.Address}}</td>
        </tr>


        </table>
    </form>
    </div>
</div>

<script type="text/javascript">
    //Defining a Angular module
    var myApp = angular.module('myApp', []); 
    //Defining a Angular Controller 
    myApp.controller('MyCtrl', ['$scope', '$http', function ($scope, $http) { 

    //Retrieving the List of people 
    GetPersons(); 
    //Displaying the Save button 
    $scope.DisplaySave = true; 

    function GetPersons() { 
    //Defining the $http service for getting the people 
    $http({
     method: 'GET', url: '/api/data' 
     }). 
     success(function (data) {
      if (data != null || data != 'undefined') { 
        //Assigning people data to the $scope variable
        $scope.persons = data; 
        //Clearing the Person object in create context and Showing default Gender(Male) Checked 
        $scope.newperson = { 
        Id: ''
        }; 
        } 
        }) 
        .error(function (error) { 
            //Showing error message 
            $scope.status = 'Unable to retrieve people' + error.message; 
        });
    }
} ]);
</script>

APIコントローラー:

public class DataController : ApiController
    {
        //GET api/data

        public IEnumerable<CommonLayer.Telesales> GetPeople()
        {
            return new BusinessLayer.Telesales().getUserSession(User.Identity.Name).AsEnumerable();
        }

エラーの詳細:

magicplayer:init: set version: 1.0.1
adme: onDOMStart: got code: user_key=f52009a2292c2b524ac9af2801caef4c443d7cdc7697dff171f77b3c81cd26fa gender=1 age=4
Error: [ng:areq] Argument 'MyCtrl' is not a function, got undefined
http://errors.angularjs.org/1.2.18/ng/areq?p0=MyCtrl&p1=not%20a%20function%2C%20got%20undefined
    at http://localhost:12570/Scripts/angular.js:78:12
    at assertArg (http://localhost:12570/Scripts/angular.js:1475:11)
    at assertArgFn (http://localhost:12570/Scripts/angular.js:1485:3)
    at http://localhost:12570/Scripts/angular.js:7198:9
    at http://localhost:12570/Scripts/angular.js:6592:34
    at forEach (http://localhost:12570/Scripts/angular.js:327:20)
    at nodeLinkFn (http://localhost:12570/Scripts/angular.js:6579:11)
    at compositeLinkFn (http://localhost:12570/Scripts/angular.js:6028:13)
    at compositeLinkFn (http://localhost:12570/Scripts/angular.js:6031:13)
    at compositeLinkFn (http://localhost:12570/Scripts/angular.js:6031:13)
Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:12570/Images/accent.png
onMessageFromBackground: method=statPixel

私は何を間違えていますか?私は他のソリューションを検索しますが、私の問題は少し違うようです。

10
rikket

私が持っていたことがわかり、このエラーを返していたレイアウトページの次のhtmlタグ

<html lang="en ng-app">

タグからng-appを削除し、コードは完全に機能します

8
rikket

私の場合、index.htmlにコントローラースクリプトを追加するのを忘れていました

5

コントローラ名のスペルを間違えたときに、この種のエラーが発生しました。 jsファイルでは大文字ですが、htmlファイルのng-controllerタグでは大文字ではありません。

3
klooth

これは、モジュール/コントローラーを適切にDOMにバインドしていない場合に発生することがあります。私は同じエラーになり、ng-appが空白に割り当てられていることがわかりました

<html ng-app="">

モジュール名を提供する必要がありました。私が与えた、それは働いた!

<html ng-app="app">
2
Anil Jeeyani

私はAngularjsコントローラのMaterial Designダイアログを使用して、タイプミスを見つけるのが非常に難しいこのエラーを受け取りました:

templateUrl: 'template.html';

セミコロンを適切なコンマに置き換えると、問題は解決しました。

templateUrl: 'template.html',
2
James Drinkard

私はすべての提案を確認し、再確認した後、数時間にわたってこれに夢中になりました。しかし、Chromeブラウザーデータ(Cookie、ホストされているアプリデータ、キャッシュされた画像とファイル))をクリアすると、エラーは消えたことが判明しました。十分にリストされたアイテム。

1
EdtheC

工場、コントローラー、メインmodule.soで同じモジュール名を使用する場合があります。これがエラーError:[ng:areq]引数を与える主な理由です。サービス、コントローラー、工場の呼び出し時に同じモジュール名を使用しないでください。

1
Gaurav verma

_<html ngapp>_をangular 1.4.8と一緒に使用しました

1.2.8に変更し、エラーを取り除きました。

私のhtmlには_<div class ="container" ng-controller="AppCtrl">_がありました

そして、私は関数を持つcontroller.jsファイルを持っていました

function AppCtrl(){ console.log("Hello from controller") }

0
PipoTells

私の場合:

  • 誤って2つのbodyタグがありました<body ng-controller="CtrlWasNotFound"> <body></body </body>
  • それだけでなく-app.jsはindex.htmlのHTMLを返しました(gulpを使用しており、構成の問題がありました
0
Ricky Levi
<sript

の代わりに

<script 

;)controller.jsのリンク中。私の場合

0
user1923363

この問題を解決するには、Angular routes:

.when('/todo',{
            templateUrl: 'partials/todo.html',
            controller: 'TodoCtrl'
        })
0
MadPhysicist