javascript - 通过加载 Controller 保持后退按钮的 Angular ?

标签 javascript angularjs browser-history ngroute

根据服务中的逻辑,我会路由到不同的 View 。为了促进服务注入(inject),我使用加载 Controller 来确定下一步要去哪里。

这非常有效,只是我无法通过加载 Controller “返回”。如何检测后退按钮,或修复我的加载模型以使其更友好?

    .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
        }
    }]);

最佳答案

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

If called, all changes to $location during current $digest will be replacing current history record, instead of adding new one.

https://docs.angularjs.org/api/ng/service/ $地点

关于javascript - 通过加载 Controller 保持后退按钮的 Angular ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654997/

相关文章:

javascript - 在 Angular JS 中的特定页面上加载 jQuery 插件

javascript - 在 Backbone.history 中读取以前的 URL

android 浏览器位置栏不会因 fragment 更改而更新

javascript - 从 Google 表单中检索到响应的链接

javascript - Javascript中用类调用类

javascript - 当元素超过 div 宽度时水平滚动/轮播

javascript - 如果 popstate 事件来自 HTML5 pushstate 的后退或前进操作,我该如何检索?

javascript - 如何迭代具有特定 img alt 属性的表格行并删除 javascript 中的单元格

javascript - 通过 CSS 类或直接(通过 DOM)修改 HTML 元素显示的更好做法?

angularjs - Cemerick Friend 和单页应用程序