【问题标题】:Reload only particular controller for $state.go仅重新加载 $state.go 的特定控制器
【发布时间】:2023-04-03 09:22:01
【问题描述】:

我的单页应用程序中有一个嵌套路由。所以从状态 client.forms.instance 我去另一个 $state 如下,

 $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>

【问题讨论】:

    标签: javascript html angularjs angular-ui-router


    【解决方案1】:

    试试这个:

    $state.go('client.forms.instance.rendering',{'sectionId':sectionId},{reload:true});
    

    不重新加载父控制器。我认为您需要在父模板 (instance) 中添加此模板,而不是在 ng-include 中手动注入模板:

    <div ui-view></div>
    

    然后在'client.forms.instance.rendering' ui-router 应该知道renderinginstance 的子级,并且将在其中注入适当的模板并在url 匹配时呈现其相关控制器或它的state 被调用。

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

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

    【讨论】:

    • 我试过这个。但是从 reload: true 开始,client.forms.instance 的控制器也会重新加载。我不希望父控制器重新加载
    • 嗯我误解了你的问题。我认为您需要使用ui-view 而不是ng-include&lt;div ui-view&gt;&lt;/div&gt; 如果 ui-router 知道 instancerendering 的父级,那么它将在其中注入相关模板。你试过了吗?
    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多