通过模板加载html时未注册具有名称的控制器

问题描述 投票:0回答:1

我目前正尝试将我的Web应用程序从通过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中?

angularjs angularjs-controller ngroute ng-view
1个回答
0
投票

我们有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. 在您的应用程序配置中注册控制器,这在您将控制器加载为惰性时会发生

    ] >>
  3. [注意:

如果您有用于控制器或嵌入式脚本的单独文件,则没有什么不同]
var app = angular.module("app", []);
app.config(function($controllerProvider){
    app.controller = $controllerProvider.register;
})
© www.soinside.com 2019 - 2024. All rights reserved.