angular-route-segment中的“无法读取未定义的属性'untilResolved'”?

Nat*_*ini 2 javascript angularjs angular-route-segment

我正在使用 angular-route-segment 设置一个简单的路由配置,而 Angular 在应用加载时抛出此错误:

TypeError: Cannot read property 'untilResolved' of undefined

Angular 和 angular-route-segment 都没有提供任何更有用的错误消息方式。

应用程序.js:

(function () {
'use strict';

var app = angular.module('emailHandlerApp', [
    // Angular modules 
    'ngAnimate',        // animations
    'ngRoute',          // routing
    'ngSanitize',       // sanitizes html bindings (ex: topnav.js)

    // 3rd Party Modules
    'ui.bootstrap',     // ui-bootstrap (ex: carousel, pagination, dialog)
    'route-segment',    // angular-route-segment
    'view-segment',     // angular-route-segment
]);

console.log("app loaded"); // just for debug!

})();
Run Code Online (Sandbox Code Playgroud)

config.route.js:

(function () {
'use strict';

var app = angular.module('emailHandlerApp');

// Configure the routes and route resolvers
app.config(function ($routeSegmentProvider, $routeProvider) {

    $routeSegmentProvider.options.autoLoadTemplates = true;
    $routeSegmentProvider.options.strictMode = true;

    $routeSegmentProvider

        .when('/', 'emailHandler')

        .when('/unsubscribe', 'emailHandler.unsubscribe')

        .when('/redirect', 'emailHandler.redirect')

        // Base shell
        .segment('emailHandle', {
            templateUrl: 'app/shell.html',
            controller: 'baseController',
            controllerAs: 'vm',
        })

        .within()

            // Dashboard
            .segment('unsubscribe', {
                templateUrl: 'app/unsubscribe/unsubscribe.html',
                controller: 'unsubscribeController',
                controllerAs: 'vm',
                dependencies: ['emailId']
            })


            // Recruiting
            .segment('redirect', {
                templateUrl: 'app/redirect/redirect.html',
                controller: 'redirectController',
                controllerAs: 'vm',
                dependencies: ['rdId']
            })
    ;

    $routeProvider.otherwise({ redirectTo: '/' });
})
})();
Run Code Online (Sandbox Code Playgroud)

Nat*_*ini 5

回答我自己的问题,因为我 99% 确定我可能会在一个月后再次使用谷歌搜索。

这个非常简单 - 只是一个代码盲和一个稍微没有信息的错误消息的问题。angular-route-segment 当您的线段树中某处的名称不合适时会抛出此问题。

就我而言,我的.segment('emailHandle', { ... })意思是打错了emailHandler,然后在它击中.within(). 刚看到的时候觉得挺傻的。