带有AngularJS的继承控制器

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

我在AngularJs中拥有JSP文件,这是我应用程序的前端。

index.jsp使用指令ng-view显示视图:

index.jsp

<div ng-view autoscroll="true" style="overflow: auto;"></div>

和与控制器的$ routeProvider链接的app.js到视图(home.jsp包含了views.jsp的一些内容):

app.js

$routeProvider
.when('/Error', {
    controller: 'LoginController',
    templateUrl: 'modules/authentication/views/errorConnexion.jsp',
    hideMenus: true
})
.when('/', {
    controller: 'HomeController',
    templateUrl: 'modules/home/views/home.jsp'
})
.otherwise({ redirectTo: '/login' });

和我的HomeController使用字段来隐藏或显示一些DOM元素:

HomeController.js

app.controller('HomeController',
                ['$timeout',
                'service',
                '$scope',
                '$rootScope',
                '$filter',
                '$location',
                '$window',
                'ModalService',
                'ngTableParams',
                '$http',
                '$interval',
                'Excel',
                function($timeout, service, $scope,
                        $rootScope, $filter, $location, $window,
                        ModalService, ngTableParams, $http, $interval, Excel) {

    $scope.Hide_Module = true;
})]);

我的控制者孩子:

ChildController.js

app
.controller('ChildController',
    function() {        
        $scope.field = "random";            
    }
);

最后是问题,视图:

view.jsp

<section ng-controller="ChildController" class="content"
         ng-hide="Hide_Module">

问题是:如果我删除了section标签上的ng-controller指令,一切都很好。但是,如果我添加它,则主视图(index.jsp)将显示view.jsp ......

所以我想知道我做错了什么,而且angularjs如何处理控制器继承以及如何通过视图绑定它们?

javascript angularjs jsp frontend ngroute
1个回答
0
投票

自己找出,这是我的项目中的两个错误:

缺少到控制器文件的链接

<script src="modules/controllers/sub/childController.js"></script>

(在index.jsp中添加)


仅在对象语法中通过$ scope变量共享数据

在父控制器中而不是基元和数组中,定义[$ scope.myObject = {key:value,...}}。在子控制器中将$ scope参数添加为:

app.controller('ChildController', ['$scope', function($scope) { } ]);
© www.soinside.com 2019 - 2024. All rights reserved.