Angular - 如何防止破坏范围与状态变化

时间:2014-11-11 15:54:50

标签: angularjs angularjs-scope angular-ui-router

免责声明我不是在寻找简单的父/子ui路由器关系

我正在寻找一个解决方案,我在一个页面上,我可以更改为任意状态而不删除前一个状态的内容/侦听器。

使用案例

  • 用户正处于启动页面
  • 点击登录模式
  • 网址从/splash更改为/login
  • 新模式打开,后台中的启动页面内容不会消失

我的想法是,我不需要在任何特定的子女状态下工作。

2 个答案:

答案 0 :(得分:3)

您可以使用UI-Router Extras“Sticky States”执行此操作。

以下是UI-Router Extras模式演示:http://christopherthielen.github.io/ui-router-extras/example/stickymodal/#/


添加UI-Router Extras:

  <script src="https://rawgit.com/christopherthielen/ui-router-extras/0.0.10/release/ct-ui-router-extras.js"></script>

var app = angular.module('plunker', ['ui.router', 'ct.ui.router.extras', 'ui.bootstrap']);

为app添加一个命名的ui-view,为模态添加一个

<body>
  <div ui-view="app"></div>
  <div ui-view="modal"></div>
</body>

将您的应用状态标记为sticky。结果是你可以从任何app.*状态导航到模态状态...而不是退出该状态,它只会“停用”它,它将保留在DOM中。

$stateProvider
.state("app", {
  template: "<div ui-view></div>",
  sticky: true,

答案 1 :(得分:0)

你不能同时在许多州。模态有自己的范围,你可以传递自己的东西,通常模态不与状态开关相关联。

  1. 重新考虑模态应该需要状态切换
  2. 模式有各自的范围,破坏不会影响到以任何方式调用它们的地方的范围。