返回时保持所有状态
Keep all states when going back
在我的Angular应用程序中有多个页面,用户可以对其进行相当大的更改,例如打开标签和药丸、情态动词等。比如说,他们打开一个模态,然后点击这个模态中的一个链接,这个链接会把他们带到另一个页面。在另一个页面,当他们回到他们的浏览器历史记录,我希望他们看到第一页的方式,他们离开它,即与模态打开,而不是它的样子,当你重新加载它。
我在Angular 1.4.3中使用ui-router。
到目前为止,我已经查看了以下链接:
- https://github.com/angular-ui/ui-router/issues/63
- https://github.com/angular-ui/ui-router/issues/562
…但它们似乎不是我所需要的。我甚至不知道怎么用谷歌搜索。
另一个例子是,当用户在搜索栏中输入一些东西,然后点击一个结果,就会进入一个新的页面。当他们返回时,他们将不得不再次进入搜索,这不是最好的体验。
使用服务存储页面状态
与其将页面状态和用户输入存储在$scope
上,不如将其存储在与$scope
一起注入到页面控制器的持久服务上。
在$scope
上保存对业务的引用:
myApp.service('MyPageStateService', function() {
this.someProperty = 'some initial state';
});
myApp.controller('MyPageController', function($scope, MyPageStateService) {
$scope.state = MyPageStateService;
});
和从页面模板访问存储在持久状态服务上的数据:
<div ng-controller="MyPageController">
<p>My page state is {{state.someProperty}}</p>
</div>
当在应用程序中导航回此页面时,控制器将获得一个新的$scope
,但MyPageStateService
的实例相同。
您可以看看粘性状态。它们不局限于向前/向后导航,这给了它们一些一致性。
如果这种行为是不可取的任何地方,但向前/向后,我想它可以通过在$stateChangeStart
上做$stickyState.reset('…')来完成,除了相邻的状态。
相关文章:
- XMLHttpRequest未返回值-状态202
- PhantomJs在控制台中发出http请求时不会返回任何状态
- 返回上一页时,Javascript仍处于活动状态
- 返回当前状态名称的方法
- 使用动态键返回不可变状态
- 如何返回可用的历史记录状态数
- 需要在悬停时激活动作,并在7秒内返回到原始状态
- Highcharts点击事件返回“;悬停”;state而不是“state”;选择“;状态
- 将函数的返回传递到另一个状态
- 在Ajax调用后返回到原始状态的HTML
- Javascript-在按下键后保持按下状态(返回true)
- 清除值时,将输入背景颜色返回到原始状态
- 将javascript(jQuery)对象属性返回到默认状态
- 在两个或多个 UL 列表之间切换,如果单击一个列表,则其他列表会自动以初始状态返回,就像从未单击过一样
- 如何将 redux 状态返回到初始状态
- AngularJS:子状态返回父视图
- 将webpurify javascript检查方法的状态返回到主程序
- iOS 8 Bug-当设备从睡眠状态返回时,OnUpdateReady再也不会调用
- XMLHttpRequest状态返回404
- 刷新页面后在jtree中从加载状态返回数据