【问题标题】:Angular controller not found or defined while doing lazy loading进行延迟加载时未找到或定义角度控制器
【发布时间】:2016-01-14 07:50:15
【问题描述】:

嗨,我正在使用 Angular 和 Require。 Require 正在管理我的依赖序列。使用延迟加载加载控制器,我能够加载我的第一个家庭控制器,但是当我想导航到仪表板控制器时,我收到错误仪表板控制器未找到。这是代码

main.html

<body ng-app >
    <div id="ViewPort"  ng-view>  </div>
 </body>

shell.js

define(['mngRoute', 'mngSanitize'], function (ngRoute, ngSantize) {

var CMSapp = angular.module('CMS', ['ngRoute', 'ngSanitize']);

CMSapp.config(function ($routeProvider, $httpProvider) {
    console.log($httpProvider);
    $routeProvider

       // route for the home page

        .when('/', { templateUrl: 'App/Partials/home.html', resolve: loader(['Home']) })

        .when('/Dashboard', { templateUrl: 'App/Partials/Dashboard.html', resolve: loader(['Dashboard']) })

});
CMSapp.run(function () {
    console.log('shell loaded');
    console.log(CMSapp);
});


return CMSapp;

Home Controller.js

define(function () {

angular.module('CMS').controller('HomeController', ["$scope", "$http", 'MainService', function ($scope, $http, mainService) {
    $scope.message = 'Homess';

    $scope.InitializeController = function ()
    {
        console.log(mainService);
        mainService.initializeApplication($scope.initializeApplicationComplete, $scope.initializeApplicationError);
    }
    $scope.initializeApplicationComplete = function (response) {
        console.log('in default initializeApplicationComplete');

    }
    $scope.initializeApplicationError = function (response) {
        console.log('in default intialize error');
    }

}]);

});

主页.html

 <div data-ng-controller="HomeController" ng-init="InitializeController()">
<span>{{message}}</span>

Dashboardcontroller 和dashboard.html 相同,只是名称不同

 define(function () {

angular.module('CMS').controller('DashboardController', ["$scope", "$http", 'MainService', function ($scope, $http, mainService) {
    $scope.message = 'Dashboard';

    $scope.InitializeController = function ()
    {
        console.log(mainService);

    }
}]);

});

仪表板html

 <div data-ng-controller="DashboardController" ng-init="InitializeController()">
<span>{{message}}</span>

我能够加载主页并能够与模型绑定,但是当我在 url 中输入 localhost:8999/Main.html#/Dashboard 时,这不在仪表板中,它给出了错误。

查看 chrome 控制台Full console

Angular、Route、Dasboardcontroller.js homecontroller.js shell.js 加载成功,控制台没有错误,只有错误是 Dasboard 控制器不是函数,已定义

【问题讨论】:

  • 在页面上初始化angular应该是ng-app="CMS"

标签: angularjs


【解决方案1】:

当你使用ng-app 时,Angular 会搜索一个名为app 的模块。如果要指定自定义模块,需要告诉它:ng-app="CMS"

我希望这有效! :)

【讨论】:

  • 我的 Angular 应用程序已启动,我可以看到主页,这是根据定义的路由默认设置的。
  • 那么,当你去#/Dashboard路线时,它不起作用?
  • @Rakesh,这实质上意味着它无法找到名为DashboardController 的控制器。不建议您使用您使用的定义语句。让我为您快速制作一个示例。
  • 感谢您的努力,我想知道仪表板控制器是否已注册(如已附上的图片所示),那么为什么它说找不到。
  • 不记录服务,而是执行以下操作:console.log( "Dashboard controller registered" );
【解决方案2】:
<body ng-app >

应该是

<body ng-app="CMS">

因为在您的代码中您声明了您的模块。

angular.module('CMS'

【讨论】:

    【解决方案3】:

    Chrome 控制台图片console2 您可以看到我的应用程序已引导加载并且控制器也已注册

    【讨论】:

    • 将此信息添加为编辑,以免您被否决。
    • 感谢您的建议,您可以查看完整的控制台视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多