只为$ state.go重新加载特定的控制器

时间:2016-01-22 09:32:08

标签: javascript html angularjs angular-ui-router

我的单页面应用程序中有一个嵌套路由。所以从状态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.goclient.forms.instance.rendering时,我想重新加载控制器RenderingController

网址正确更改。但RenderingController每次都不会重新初始化。

顺便说一句,我将带有html的RenderingController添加到主视图中,如下所示。

<div ng-include="'scripts/client/forms/formInstance/rendering/formRendering.html'"></div>

1 个答案:

答案 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 中应该知道renderinginstance的子项,并且会在内部注入相应的模板,并在每次调用时呈现其相关的控制器url匹配或调用state

如果许多州应该注入同一页面。那么你可以考虑使用命名视图。更多细节可以在这里找到:

https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views