使用 Ui-Router 并坚持良好的设计模式

Using Ui-Router and adhering to good design patterns

学习Angular。使用 1.6.6.

尝试使用 ui.router,运行 遇到注入组件的问题。

我一直在使用以下资源来构建我的项目: AngularJS: Understanding design pattern https://github.com/angular-app/angular-app

这两个资源都建议使用 module 作为其下代码的容器。例如来自我自己的项目:

angular.
    module('randomTownGenerator.module', [
        'randomTown.service',
        'randomTown.controller'
    ]);

这些依赖项中的每一个都在其自己的文件中定义。当我将上述 module 指定为路由的组件时:

var randomTownGenerator = {
            name: 'randomTownGenerator',
            url: '/random-town',
            component: 'randomTownGenerator.module'
        }

我得到:

Error: [$injector:unpr] Unknown provider: randomTownGenerator.moduleDirectiveProvider <- randomTownGenerator.moduleDirective

如何将 randomTownGenerator.module 传递给 ui.router,它只是 servicetemplatecontroller 的包装?

您提供了一个需要 angular 组件的模块。

component: 'randomTownGenerator.module'

此处 angular-ui-router 期望 angular 组件生成为状态 'randomTownGenerator' 的视图。请参阅 angularjs 文档了解如何创建组件。 https://code.angularjs.org/1.6.6/docs/guide/component

您正在尝试混淆 angularjs 注入模块的早期版本和注入模块的新方法。

您应该提供一个组件作为更高版本的视图,以便在请求ui红色时加载。

 var States = {
        "app": {
            path: "",
            routing: null,
            definition: {
                name: "app",
                url: "",
                onEnter: function () {

                    console.info("App state entered.");
                },
                params: {
                    //
                },
                resolve: {
                    //
                },
                views: {
                    "app@": {
                        component: "appComponent"
                    }
                },
                abstract: true
            }
        }
    };

其中组件应该是组件而不是模块。这是 complete example 如何使用 ui-router 和 angularjs 1.6 version

创建状态