ui-router v1.0.0alpha0 - TypeError:无法读取undefined的属性'creationContext'

时间:2016-02-05 09:13:27

标签: angularjs angular-ui-router

我开始用AngularJS v1.4.0测试新的ui-router v1.0.0alpha0,但是我收到了这个错误:

TypeError: Cannot read property 'creationContext' of undefined
    at http://localhost:1828/lib/angular-ui-router/release/angular-ui-router.js:1573:65
    at curried (http://localhost:1828/lib/angular-ui-router/release/angular-ui-router.js:128:24)
    at http://localhost:1828/lib/angular-ui-router/release/angular-ui-router.js:130:21
    at Array.filter (native)
    at matchingConfigPair (http://localhost:1828/lib/angular-ui-router/release/angular-ui-router.js:1587:48)
    at Array.map (native)
    at $View.sync (http://localhost:1828/lib/angular-ui-router/release/angular-ui-router.js:1597:53)
    at $View.register [as registerUiView] (http://localhost:1828/lib/angular-ui-router/release/angular-ui-router.js:1605:15)
    at http://localhost:1828/lib/angular-ui-router/release/angular-ui-router.js:3741:37
    at invokeLinkFn (http://localhost:1828/lib/angular/angular.js:8604:9) <!-- uiView: subjects.intro -->

这是我的app.config:

   var home = {
        name: 'home',
        template: '<div data-ui-view></div>',
        url: '/home/'
    };

    var homeSubjects = {
        name: 'home.subjects',
        resolve: {
            getSubjects: ['subjectService',
                (sus: ISubjectService) => {
                    console.log("getSubjects");
                    sus.getSubjects();
                    return true;
                }]
        },
        url: 'subjects',
        views: {
            '': {
                templateUrl: 'app/subjects/partials/subjects.html',
            },
            'subjects.intro@home.subjects': {
                templateUrl: 'app/subjects/partials/subjects_intro.html',
            },
            'subjects.auth@home.subjects': {
                templateUrl: 'app/subjects/partials/subjects_auth.html',
            }
        }
    };

有没有人知道可能导致此问题的原因,或者我如何继续了解更多关于我在路由器的0.2版本中没有得到的问题?

由于

3 个答案:

答案 0 :(得分:2)

您遇到此错误,因为它尝试查找名为ui-view的{​​{1}}作为父级。

Imo这样做更简单:

subjects

绝对定位'intro@home.subjects': { 上下文中的'info'视图。

因此,您可以在'home.details'中获得以下ui视图:

app/subjects/partials/subjects.html

但是,如果您执行希望<div ui-view='intro'/> 名称中的点从ui-view source读取此评论。

ui-router

所以在你的情况下,我猜这适用:

 /*
 * If the ViewConfig's target ui-view name is a segmented name (with dots), then a ui-view matches if:
 * - There exists a parent ui-view where:
 *    - the parent ui-view's name matches the first segment (index 0) of the ViewConfig's target name
 *    - the parent ui-view's context matches the ViewConfig's anchor
 * - And the remaining segments (index 1..n) of the ViewConfig's target name match the tail of the ui-view's fqn
 */

答案 1 :(得分:0)

由于您尚未提供JSFiddle示例,因此您很难注意到代码中的错误。但是这里是similar question,解决方案首先添加父状态。也许你使用相同的概念。

答案 2 :(得分:0)

首先我会尝试删除这里的逗号:

templateUrl: 'app/subjects/partials/subjects_auth.html',

..如果没有这样做,我会尝试更改

url: '/home/'来:url: '/home'

url: 'subjects'来:url: '/subjects'

如果还有问题,我会:

  • 开始研究如何从这些变量生成状态 - 我不知道它们被送到$stateProvider的哪个位置。
  • 验证是否在子状态之前创建了父状态。