Аргумент 'cotroller' не является функцией, получил неопределенный

0

Это мой HTML файл

<head>
    <meta charset="UTF-8"/>
    <title>CBIR</title>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="../js/angular.js"></script>
    <script src="../js/AngularCotroller.js"></script>
    <script src="../js/ApiCallService.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js" type="text/javascript"></script>
</head>
<body>
<div ng-app="App">
    <div ng-controller="AppController">
         <div class="form-group row">
            <button id="btnGetKey" class="btn btn-default" ng-click="btnGetKey()">Get Key</button>
            <p> {{message}}</p>
        </div>


        <br>
    </div>
  </div>
</div>
</body>
</script>

Это файл AngularController.js

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

angularmodule.controller('AppController', function ($scope, $http, ApiCall)      {
//Intital message value
$scope.message = "Don't Give up";
$scope.btnGetkey = function () {

    var result = ApiCall.GetKeyFromServer().success(function (data) {
        var data = $.parseJSON(JSON.parse(data));
        $scope.message = data;
        $scope.message = "123123123";
    });
};


});

Это файл ApiServiceCall

angularmodule.service('ApiCall', ['$http', function ($http) 
{
var result;

// This is used for calling get methods from web api
this.GetKeyFromServer = function () {
    result = $http.get('http://localhost:8090/CBIR/checkReturn').success(function (data, status) {
        result = (data);
    }).error(function () {
        alert("Something went wrong");
    });
    return result;
};

}]);

Когда я загружаю файл индекса Ошибка: [ng: areq] Аргумент "AppController" не является функцией, получил undefined http://errors.angularjs.org/1.2.16/ng/areq?p0=AppController&p1=not%20a %20function% 2C %20got %20undefined Я получаю эту ошибку. Пожалуйста помоги

  • 0
    Моим первым предположением будет то, что вы не можете создать экземпляр контроллера, потому что он использует ваш сервис ApiCall, и это неправильно зарегистрировано. Попробуйте App.service('ApiCall'... вместо этого. Дайте мне знать, работает ли это.

1 ответ

4
Лучший ответ

У вас есть один параметр, но фактическая функция использует три:

['$scope', function ($scope, $http, ApiCall)

Вам нужно либо указать все из них, как это:

['$scope', '$http', 'ApiCall', function ($scope, $http, ApiCall)

или если вы не собираетесь минимизировать свой код, просто используйте:

function ($scope, $http, ApiCall)

Как предположил @Slytherin, другая ошибка у вас есть в вашем служебном файле:

  • у вас есть опечатка: AnguarModule ! = angular.module
  • и даже если это не опечатка, вы переустанавливаете свой модуль, а не ссылаетесь на него (разница в том, что второй параметр - см. документы)
  • 1
    Даже не заметил этого. Upvoting
  • 0
    @Slytherin Вы правы и в отношении сервиса.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню