Angular ui-路由器:如何加载子控制器而不是父控制器?
Angular ui-router: How to load child controller instead of parent controller?
我的 Angular 应用程序中有以下嵌套路由:
.state('mapping', {
url: '/mapping',
templateUrl: 'app/components/mapping/mapping.html',
controller: 'MapCtrl as map',
abstract: true,
authenticate: true
})
.state('mapping.all', {
url: '',
templateUrl: 'app/components/mapping/partials/all.html',
authenticate: true
})
.state('mapping.project', {
url: '/:projectName',
controller: 'ProjectCtrl as proj',
templateUrl: 'app/components/mapping/partials/project.html',
authenticate: true
})
访问 'mapping.project'
时,ProjectCtrl
永远不会加载。相反,MapCtrl
加载时就好像我仍在父状态一样。
如何使用特定于该子状态的另一个控制器覆盖父控制器?
我希望每次访问该特定子状态时都加载此控制器,如果我对每个子状态都有一个父控制器,则不会发生这种情况。
任何 controller
都与 view
相关(与 state
无关)。这意味着,如果:
...When accessing mapping.project, ProjectCtrl never gets loaded....
该视图未加载。这主要意味着 parent view
(app/components/mapping/mapping.html
) 不包含目标:
<div ui-view=""></div>
因此,如果我们将目标 (ui-view=""
) 放入父模板,子状态会将其视图注入该位置。但这不会取代父控制器。会
- 当访问父级(或直接子级)时调用父级
ctrl
- 如果从父项访问子项,则不会重新初始化父项
ctrl
,但会启动子项 ctrl
检查这些以获取更多详细信息:
- Angular UI Router - Nested States with multiple layouts
- How to disable data inheritance of angular ui router states
我的 Angular 应用程序中有以下嵌套路由:
.state('mapping', {
url: '/mapping',
templateUrl: 'app/components/mapping/mapping.html',
controller: 'MapCtrl as map',
abstract: true,
authenticate: true
})
.state('mapping.all', {
url: '',
templateUrl: 'app/components/mapping/partials/all.html',
authenticate: true
})
.state('mapping.project', {
url: '/:projectName',
controller: 'ProjectCtrl as proj',
templateUrl: 'app/components/mapping/partials/project.html',
authenticate: true
})
访问 'mapping.project'
时,ProjectCtrl
永远不会加载。相反,MapCtrl
加载时就好像我仍在父状态一样。
如何使用特定于该子状态的另一个控制器覆盖父控制器?
我希望每次访问该特定子状态时都加载此控制器,如果我对每个子状态都有一个父控制器,则不会发生这种情况。
任何 controller
都与 view
相关(与 state
无关)。这意味着,如果:
...When accessing mapping.project, ProjectCtrl never gets loaded....
该视图未加载。这主要意味着 parent view
(app/components/mapping/mapping.html
) 不包含目标:
<div ui-view=""></div>
因此,如果我们将目标 (ui-view=""
) 放入父模板,子状态会将其视图注入该位置。但这不会取代父控制器。会
- 当访问父级(或直接子级)时调用父级
ctrl
- 如果从父项访问子项,则不会重新初始化父项
ctrl
,但会启动子项ctrl
检查这些以获取更多详细信息:
- Angular UI Router - Nested States with multiple layouts
- How to disable data inheritance of angular ui router states