AngularJS ui-router - 模板不显示

AngularJS ui-router - template not displaying

我一直在关注 egghead.io 显示应用程序架构的教程,并将相关部分更改为 ui我的应用程序的要求ui评论。

请记住,我是 Angular 的新手,所以希望这是一个容易发现的问题。

我已经为我的应用程序以分层方式设置了多个控制器和模板。我正在使用 ui-路由器。

这是我的 app.start.js 定义和依赖关系

angular.module('sb', [
    'ui.router',
    'angularLocalStorage',
    'events',
    'user'
]

然后我继续定义我的 events.js 控制器和依赖项,以及 stateProvider

angular.module('events', [
    'sb.models.events',
    'events.show',
    'events.list',
    'events.edit',
    'events.create'
])
    .config(function($stateProvider) {
        $stateProvider
            .state('sb.events', {
                url: '/',
                views: {
                    'events@': {
                        controller: 'EventsCtrl as evm',
                        templateUrl: 'app/events/list/event-list.tmpl.html'
                    },
                }
            })
    })

此时,一切正常。但是,当我尝试导航到 url.com/#/events/create 时,我可以在 chrome 开发人员工具中看到正在检索的模板,但它并没有更新实际的可见模板来显示这一点。

这是我的活动-create.js

angular.module('events.create', [

])
    .config(function($stateProvider) {
        $stateProvider
            .state('sb.events.create', {
                url: 'events/create',
                templateUrl: 'app/events/create/event-create.tmpl.html',
                controller: 'EventsCreateCtrl as ecc',
            })
    })

澄清一下,我的主要 html 模板确实有一个 ui-view="events"

任何指点将不胜感激

如果不知道您的 ui-views 在哪里,很难确定(发布一些 html 向我们展示它的结构将对像这样的情况),但这是我根据给定信息做出的最佳猜测:

这里的大问题是您的事件-list.tmpl.html 是否包含 ui-视图?因为它需要一个。当您呼叫您的状态 sb.events.create 时,您要求您的路由器加载它 inside 的主要 ui-视图sb.events-状态。如果该状态的模板 none 实际上包含一个 ui-视图,则它没有地方可以添加 html.

如果您真的想用事件创建模板替换事件列表模板,那么您应该将其命名为 sb.eventsCreate 或类似名称,and/or 以与加载事件列表相同的方式将其加载到 events@

此外,我认为这不是问题,因为您的事件列表加载正常,但以防万一不清楚:不是 events@ 假设 ui-视图命名事件位于根目录中。如果视图位于 sb 中,则使用相对名称(events,即不带 @)或 events@sb .

有类似的症状,但我的问题是我的标记中有 ng-view (ngRoute) 而不是 ui-view (ui-route)。

只是出现了由不同问题引起的相同症状:将州的 url 定义为驼峰式而不是连字符。

而不是 url: '/someUrl'url: '/some-url'