如何在触发状态转换 ui-router 时保留 ui-view 的旧内容并更改另一个

Posted

技术标签:

【中文标题】如何在触发状态转换 ui-router 时保留 ui-view 的旧内容并更改另一个【英文标题】:How can i keep the old content of an ui-view and change another when i trigger state transition ui-router 【发布时间】:2013-12-24 15:30:11 【问题描述】:

我开始使用 angularjs 已经有好几个星期了,我发现它非常棒! 我也将 ui-router 用于多个和嵌套视图,这是我的问题: 我有 2 个状态 "state1" "state2" 和 2 个名为 ui-view "viewA" 和 "viewB " 在我的 index.html 中。 当我转到“state1”时,我会在“viewA”和“edit.html”中呈现 list.html在“viewB”中, 当我转到“state2”时,我在“viewA”中渲染“create.html”,问题是“viewB”变为空,我希望“viewB”的旧内容仍然显示。 那么当我触发 state transition 时,如何保留 ui-view 的旧内容? 我希望这一切都非常清楚,非常感谢。

index.html

 <a ui-sref="state1">state1</a>
    <a ui-sref="state2">state2</a>

    <div ui-view ="viewA"> </div>
    <div ui-view ="viewB"> </div>

module.config

$stateProvider
         .state('state1', 

        views: 
            "viewA":  templateUrl: "views/nfl/list.html" ,
            "viewB":  templateUrl: "views/leagues/edit.html" 
        
    );
$stateProvider 
         .state('state2', 

        views: 
             "viewA":  templateUrl: "views/nfl/create.html" 

    
);

【问题讨论】:

查看 [this question][1] 看看是否能解决您的问题。我认为可能。 [1]:***.com/questions/17476694/… 【参考方案1】:

视图已更改,因为它是状态的一部分。

我认为您需要使用 viewB 创建抽象状态 #1 作为编辑,然后创建状态:状态 #2 作为 state1.1 使用 viewA list.html 和状态 #3 作为 state1.2 使用 viewA create.html - 这种方式可以帮到你。

(我没有测试)

【讨论】:

以上是关于如何在触发状态转换 ui-router 时保留 ui-view 的旧内容并更改另一个的主要内容,如果未能解决你的问题,请参考以下文章

当 UI-Router ES6 中的状态更改时,$stateChangeStart 不会被触发?

当用户使用 UI-Router 转换到其父状态时将用户定向到子状态

使用嵌套状态作为ui-router中的选项卡

如何使用 UI-router 将对象传递到状态?

防止页面重新加载状态

如何查看 AngularJS / UI-Router 中配置了哪些状态?