Контроллер с именем не регистрируется при загрузке html через шаблон - PullRequest
0 голосов
/ 05 октября 2019

В настоящее время я пытаюсь изменить свое веб-приложение с маршрутизации через MVC на SPA, где все разные будут загружаться на одной главной странице. Для этого я использую директиву ngview. Это главная страница -

<div ng-app="app">
     <div ng-view>
    </div>
</div>

@section Scripts{
    <script src="~/Scripts/angular-route.js"></script>
    <script>
       var app=angular.module('app',['ngRoute']);

        app.config(function ($routeProvider,$locationProvider) {
            $routeProvider
            .when("/", {
                templateUrl: "Experimental/Index.html",
                controller:"AddressList"

            })

        });

</script>

}

Пока у меня только один маршрут. Мой контроллер определен в теге скрипта внутри самого файла Index.html, а не в отдельном файле .js, например, так -

  angular.module('app')
    .controller('AddressList', ['$scope', '$http', function ($scope, $http) {

        $scope.model = [];
        $http.get('/Addresses/GetAddresses').then(function (response) {
            if (response != null || response != "undefined") {
                $scope.model = response.data;
            }
        });

    }]);

Но после загрузки главной страницы я получаю сообщение об ошибке -

Контроллер с именем AddressList не зарегистрирован.

Означает ли это, что все мои контроллеры должны храниться в отдельных файлах или внутри основного html?

1 Ответ

0 голосов
/ 06 октября 2019

У нас есть 2 причины для незарегистрированного сообщения в Angularjs:

  1. Источник не определен в вашем приложении

    <script defer src="angular.js"></script>
    <script defer src="app.js"></script> <!-- app.module(...) -->
    <script defer src="controller.js"></script> <!-- app.controller(...) -->
    
  2. Зарегистрируйте контроллер в конфигурации вашего приложения, это происходит, когда вы загружаете контроллеры как ленивые

Примечание: Неотличается, если у вас есть отдельный файл для вашего контроллера или встроенный скрипт

var app = angular.module("app", []);
app.config(function($controllerProvider){
    app.controller = $controllerProvider.register;
})
...