如何在触发状态转换 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 不会被触发?