我很好地使用了 angular 1.5 状态(嵌套状态、选项卡状态、模态统计)
Ui-router-extras 具有粘性状态,但我没有看到与经典父/子状态架构的区别?
粘性状态的基本示例是我们可以在没有粘性的情况下做什么? http://plnkr.co/edit/SCHExh4DYKFd9Kq3UbaA?p=preview
如果你删除sticky: true
,你会得到相同的行为
我很好地使用了 angular 1.5 状态(嵌套状态、选项卡状态、模态统计)
Ui-router-extras 具有粘性状态,但我没有看到与经典父/子状态架构的区别?
粘性状态的基本示例是我们可以在没有粘性的情况下做什么? http://plnkr.co/edit/SCHExh4DYKFd9Kq3UbaA?p=preview
如果你删除sticky: true
,你会得到相同的行为
不,不是。ui-router
实际上,它将您的应用程序转换为状态机。状态机的严格定义是在任何时间点都只能有一个状态处于活动状态。
现在,这意味着每当您从stateA
to 转换stateB
时,stateA
的范围(以及控制器等其他资产)将被销毁,而stateB
那些被实例化。所以从字面上看,你不能让stateA
's 和stateB
' 控制器和作用域同时处于活动状态。结论是,在严格的状态机中不允许并行(又名粘性)状态。
ui-router-extras
让你这样做。您可以同时激活多个状态。
让我们有一个示例场景。
stateA
。stateA
中,您开始从 100 秒倒计时到 0。stateB
检索一些数据。你花 10 秒钟在stateB
.stateA
现在,对于一个正常的ui-router
. 当您在第 4 步返回时stateA
,您的倒计时从 100 秒重新开始。与粘性状态一样,您的倒计时从 57-10 = 47 秒开始。
这很重要,因为对于正常的ui-router
,当您转换到 时stateB
,您stateA
的范围被破坏。转换回stateA
将重新实例化所有内容,因此倒计时再次从 100 开始。如果您使用粘性状态,则范围将被保留。
这是你的plnkr 演示。尝试注释掉sticky:true
, 并在 tab1 和 tab 2 中来回切换,你会看到区别。