保持状态打开”;在背景中”;.隐藏,但不要't在Angular UI中离开状态
Leave state open "in background". Hide, but don't leave state in Angular UI
我有一个Angular应用程序,它使用Angular UI来处理状态,有2个或多个状态。在一种状态下,用户可能开始写文本,例如,或播放Youtube视频。目前,如果他们切换状态,视频将停止播放,其他数据将丢失。各州并没有相互嵌套,这与应用程序的布局方式并不相符。
有没有一种方法可以在国家发生变化时不摧毁它们,并让它们"在后台"保持开放?
我的另一个想法是将这些状态合并为一个状态,然后使用ng-hide在这些视图之间切换。但这将增加加载时间,并且未来可能会有大量流。
另一个想法是在播放Youtube视频时以更高的状态打开它。
如果有帮助的话,想象一下我的状态是链接浏览器选项卡,我希望用户能够在它们之间切换。
有没有针对这个或其他想法的原生Angular UI解决方案?
谢谢。
我不确定YouTube视频,因为它将在DOM中,DOM中的内容在状态之间被替换。
对于其他数据,可以考虑使用角度服务在视图之间存储变量。服务独立于视图,非常适合这类事情。
你也可以在你的服务中存储当视图更改时用户在YouTube视频中的位置。这样,当视图再次变回时,您可以继续播放。
服务:
app.factory('MainService', function(){
var service = {};
service.model = 'Main page';
return service;
});
使用服务的控制器:
app.controller( 'MainCtrl', function ( $scope, MainService ) {
$scope.service = MainService;
});
最后在模板中:
<input type="text" ng-model="service.model">
以下是使用服务和ngRoute的示例:http://jsfiddle.net/NEuJ6/180/
编辑:如果你想在状态更改时在服务中存储一些东西,那么使用
$scope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
service.storedStuff = 'Something';
});
在您的控制器中。
相关文章:
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- 使用AngularJS中的UI路由器将状态重定向到默认子状态
- 在UI路由器中以抽象状态填充常见视图
- 如何在具有某些 UI 视图的状态中管理工厂单个请求数据
- 带有嵌套状态的Angular ui路由器和后退按钮
- 如何加载嵌套3个状态的UI路由器UI视图模板
- Angular+bootstrap ui,检查当前选项卡是否已处于活动状态
- ui路由器的惰性加载状态
- Angular JS/UI Router:为给定状态禁用指令
- AngularJS UI路由器未进入默认状态
- Angular UI路由器-检查父状态
- 状态更改期间角度UI路由器中的嵌套视图滞后
- angularjs-ui路由器父状态,参数加载在子状态之后
- Angularjs-ui路由器使用不同的参数进入相同的状态
- AngularJS ui路由器状态结构
- Angularjs:ui路由嵌套状态下的绑定不起作用
- 如何将值与$scope绑定,以从定义状态ui路由器的控制器中使用ng模型进行查看
- 防止命中子状态 ui 路由器
- 从服务器加载 html 和控制器并创建动态状态 UI - 路由器
- 如何在vue.js中观察状态/UI的变化