【问题标题】:Preserving back button in angular through a loading controller?通过加载控制器以角度保留后退按钮?
【发布时间】:2015-07-27 13:51:59
【问题描述】:

根据服务中的逻辑,我会路由到不同的视图。为了方便服务注入,我使用加载控制器来确定下一步要去哪里。

这很好用,只是我不能通过加载控制器“返回”。如何检测后退按钮,或修复我的加载模型使其更友好?

    .when('/loading', {
                templateUrl: '/app/views/mystuff/loading.html',
                controller: 'LoadingController'
            })

angular.module('app').controller('LoadingController', ['$location', 'WhereService',
    function ($location, WhereService) {
        if (!WhereService.doneWithA()) {
            $location.path('/a');
        }
        else if (!WhereService.doneWithB()) {
            $location.path('/b');
        }
        else {
            location.href = "/myapp/somewhereelseentirely"//this is fine
        }
    }]);

angular.module('app').controller('ALoadingController', ['$location', 'AService',
    function ($location, AService) {
        if (!AService.isDone()) {
            $location.path(AService.currentPath());
        }
        else {
            $location.path('/');//triggers loading controller above
        }
    }]);

【问题讨论】:

  • 如果我理解正确,您无法返回,因为按下返回按钮会将您导航到 /loading 路线,LoadingController 接管并导航您返回到目前看来?如果是这种情况,在LoadingController 中执行$location.replace() 在每个之前 $location.path('...') 可能会有所帮助。

标签: javascript angularjs browser-history ngroute


【解决方案1】:

听起来你需要$location.replace()

如果调用,当前 $digest 期间对 $location 的所有更改都将替换当前历史记录,而不是添加新记录。

https://docs.angularjs.org/api/ng/service/$location

【讨论】:

  • 对于任何“加载”路径,我在每个 $location.path() 之后添加了 $location.replace()。
猜你喜欢
  • 2021-07-01
  • 1970-01-01
  • 2017-10-03
  • 2020-07-04
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
相关资源
最近更新 更多