Angularjs:$routeChangeStart 自定义属性在 $location.path 上未定义

标签 angularjs angularjs-routing

我在 $routeProvider 中使用自定义属性来检查是否需要登录,并在 $routeChangeStart 事件中检查它。它在正常的 URL 更改上工作正常,但如果我使用 $location.path 更改 URL,则 custom property 将显示为未定义。任何人都知道如何使用 k$location.path 获取自定义属性

 $routeProvider.when('/result', {
                templateUrl: 'partials/result.html',
                controller: 'ResultCtrl',
                data: {
                    requireLogin: true
                }
            });
 $rootScope.$on('$routeChangeStart', function (event, next, current) {
        var requireLogin = false;
        if (next['data']) {
            requireLogin = next.data.requireLogin
        }

正常重定向(使用 anchor href)next.data.requireLogin 正在工作。但是,如果我用 $locaion.path 更改 URL,它就会变成未定义的。

谢谢, 乌德什

最佳答案

可能是您通过$location.path 设置的路径 是错误的?如果路径,我找不到找到自定义数据对象的任何问题。如果 path 与其中一条路线不匹配 - 我会得到一个 undefined 异常。我还要为 next 添加空检查。

Plunker

if (next && next['data'])

关于Angularjs:$routeChangeStart 自定义属性在 $location.path 上未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31067010/

相关文章:

javascript - 使用 AngularJS 加载下一组内容

javascript - Angular.js 路由不起作用

javascript - Angular + typescript : Use Directive Class Scope Variable in Controller Class

javascript - 为什么 Angular JS 中从 ng-controller 传递的值是空白

javascript - 如何从 ng-repeat 内的对象中删除元素?

angularjs - AngularJS 中的动态路由 - 我可以在设置 $routeProvider 之前从服务器检索数据吗?

javascript - if 语句检查 get 请求 AngularJS 的 http 状态

javascript - Angular Directives 如何使用重复数据

AngularJS $routeProvider 没有重新加载方法

angularjs - 跨源请求仅支持 HTTP