我在main.html
:
<div ng-controller="MainCtrl">
<form ng-controller="SearchCtrl">
<input ng-model="query" ng-change="changed(query)" />
</form>
</div>
而且,index.html
:
<html>
<head>
<title>Dashboard</title>
</head>
<body ng-app="MyApp">
<nav ng-controller="NavCtrl">
...
</nav>
<div ng-view></div>
</body>
</html>
而且,我的ngRoute配置如下:
module.config(function($routeProvider)){
$routeProvider.when('/', {
templateUrl: 'views/main.html',
controller: 'SearchCtrl'
});
}
我尝试访问$scope.$parent
中的SearchCtrl.js
,寻找$scope
的{{1}}但我得到了MainCtrl
。
我尝试在配置中更改控制器,但之后,我无法访问undefined
。我该怎么办?
答案 0 :(得分:1)
根据结构显示,ng-view
内的所有内容都将由路由配置.... SearchCtrl
设置在控制器中。
然后内部将是MainCtrl
并且在SearchCtrl
因此,应该将路径控制器更改为MainCtrl
并删除ng-controller="MainCtrl"
module.config(function($routeProvider)){
$routeProvider.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
});
}
main.html中
<div>
<form ng-controller="SearchCtrl">
<input ng-model="query" ng-change="changed(query)" />
</form>
</div>
答案 1 :(得分:1)
main.html已经在SearchCtrl范围内,您无需在视图中再次定义范围。
然后,在“SearchCtrl”范围下的main.html中定义MainCtrl将不会将MainCtrl作为其父级。
因此从main.html中删除两个控制器
<form>
<input ng-model="query" ng-change="changed(query)" />
</form>
现在在index.html中,将MainCtrl作为父视图放到ng-view
.......
<div ng-controller="MainCtrl">
<div ng-view></div>
</div>
.......
现在尝试在SearchCtrl中访问$ scope。$ parent,然后你可以看到它。