我的单页面应用程序中有一个嵌套路由。所以从状态client.forms.instance
我转到另一个$状态,如下所示,
$state.go('client.forms.instance.rendering', { 'sectionId': sectionId });
此client.forms.instance.rendering
就是这样,
var forms = {
url: '/sections/:sectionId',
templateUrl: 'scripts/client/forms/formInstance/rendering/formRendering.html',
controller: 'RenderingController',
controllerAs: 'vm',
};
$stateProvider.state('client.forms.instance.rendering', forms);
所以当我$stage.go
到client.forms.instance.rendering
时,我想重新加载控制器RenderingController
。
网址正确更改。但RenderingController
每次都不会重新初始化。
顺便说一句,我将带有html的RenderingController
添加到主视图中,如下所示。
<div ng-include="'scripts/client/forms/formInstance/rendering/formRendering.html'"></div>
答案 0 :(得分:1)
试试这个:
$state.go('client.forms.instance.rendering',{'sectionId':sectionId},{reload:true});
不重新加载父控制器。我认为不是在ng-include
内手动注入模板,而是需要在父模板(instance
)中添加此模板:
<div ui-view></div>
然后在'client.forms.instance.rendering'
ui-router 中应该知道rendering
是instance
的子项,并且会在内部注入相应的模板,并在每次调用时呈现其相关的控制器url
匹配或调用state
。
如果许多州应该注入同一页面。那么你可以考虑使用命名视图。更多细节可以在这里找到:
https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views