1

我很好地使用了 angular 1.5 状态(嵌套状态、选项卡状态、模态统计)

Ui-router-extras 具有粘性状态,但我没有看到与经典父/子状态架构的区别?

粘性状态的基本示例是我们可以在没有粘性的情况下做什么? http://plnkr.co/edit/SCHExh4DYKFd9Kq3UbaA?p=preview

如果你删除sticky: true,你会得到相同的行为

4

1 回答 1

3

不,不是。ui-router实际上,它将您的应用程序转换为状态机。状态机的严格定义是在任何时间点都只能有一个状态处于活动状态

现在,这意味着每当您从stateAto 转换stateB时,stateA的范围(以及控制器等其他资产)将被销毁,而stateB那些被实例化。所以从字面上看,你不能让stateA's 和stateB' 控制器和作用域同时处于活动状态。结论是,在严格的状态机中不允许并行(又名粘性)状态。

ui-router-extras让你这样做。您可以同时激活多个状态。

让我们有一个示例场景。

  1. 你先去stateA
  2. stateA中,您开始从 100 秒倒计时到 0。
  3. 在第 57 秒中途,您去stateB检索一些数据。你花 10 秒钟在stateB.
  4. 你回到stateA

现在,对于一个正常的ui-router. 当您在第 4 步返回时stateA,您的倒计时从 100 秒重新开始。与粘性状态一样,您的倒计时从 57-10 = 47 秒开始。

这很重要,因为对于正常的ui-router,当您转换到 时stateB,您stateA的范围被破坏。转换回stateA将重新实例化所有内容,因此倒计时再次从 100 开始。如果您使用粘性状态,则范围将被保留。

这是你的plnkr 演示。尝试注释掉sticky:true, 并在 tab1 和 tab 2 中来回切换,你会看到区别。

于 2017-01-13T04:55:32.267 回答