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

时间:2015-06-26 07:06:31

标签: angularjs angularjs-routing

我在 $ routeProvider 中使用自定义属性来检查是否需要登录,并在 $ routeChangeStart 事件中进行检查。它在正常的URL更改时工作正常,但如果我使用 $ location.path 更改URL,则自定义属性将变为未定义。任何人都知道如何获得自定义属性,即使使用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
        }

正常重定向(使用锚点href) next.data.requireLogin 正在运行。但是,如果我使用 $ locaion.path 更改网址,则会显示为未定义。

谢谢, Udesh

2 个答案:

答案 0 :(得分:1)

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

Plunker

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

答案 1 :(得分:1)

问题在于我设置$ location.path()的方式。我正在设置路径

$location.path('/result')

将其更改为

$location.path('result')

做了伎俩......

到处都记录了' /' ...不确定哪一个是正确的方法,但它解决了我的问题..谢谢:)