我在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如何处理控制器继承以及如何通过视图绑定它们?
自己找出,这是我的项目中的两个错误:
缺少到控制器文件的链接
<script src="modules/controllers/sub/childController.js"></script>
(在index.jsp中添加)
仅在对象语法中通过$ scope变量共享数据
在父控制器中而不是基元和数组中,定义[$ scope.myObject = {key:value,...}}。在子控制器中将$ scope参数添加为:
app.controller('ChildController', ['$scope', function($scope) { } ]);