使用 Angular UI Router 渲染组件

Posted

技术标签:

【中文标题】使用 Angular UI Router 渲染组件【英文标题】:Rendering a component with Angular UI Router 【发布时间】:2016-12-18 06:56:22 【问题描述】:

当我将 url 更改为“/nameDisplay”时,我似乎无法显示“nameDisplay”组件。它没有显示任何错误,只是没有将模板插入到 ui-view 中。如果我在“状态”而不是组件中使用模板,那么它可以正常工作,否则它什么也不显示。

我使用的版本控制是: 角度 - 1.5.8 角度 ui 路由器 - 0.3.1

angular.module('app.nameDisplay', [uiRouter])
.component('nameDisplay', 
    controller: function()
        this.name = "Keir Beckett";
        this.age = 24;
        this.changeInfo = function()
            this.name = "Golash Bista";
            this.age = 66;
        
    ,
    template: "" +
        "<div>" +
            "<h2>$ctrl.name</h2>" +
            "<h4>$ctrl.age</h4>" +
            "<button ng-click='$ctrl.changeInfo()'>Change Info</button>" +
        "</div>"
).config(($stateProvider, $urlRouterProvider) => 
    $stateProvider.state('nameDisplay', 
        url: '/nameDisplay',
        component: 'nameDisplay'
    )
    .state("otherDisplay", 
        url: '/otherDisplay',
        template: '<h1>Other Display</h1>'
    );
    $urlRouterProvider.otherwise('/');
)
.name;

【问题讨论】:

我从未将component 视为state 对象的属性...这是一种新语法吗?通常,这是通过template: '&lt;name-display&gt;&lt;/name-display&gt;' 来完成的。 【参考方案1】:

直接在 ui-router 配置中使用组件仅适用于 ui-router 1.0.0 以后。因此,您应该升级到(目前仍然是)beta 版本,或者使用 0.3.x 样式来包含使用 &lt;name-display&gt;&lt;/name-display&gt; 模板的组件。

在此处查看我对类似问题的回答:Angular 1.5 - UI-Router, Resolve Object returning undefined values

【讨论】:

以上是关于使用 Angular UI Router 渲染组件的主要内容,如果未能解决你的问题,请参考以下文章

Angular Webpack ES2015 组件构建中未触发 angular-ui-router $stateChangeStart 事件

Angular 1.5,ui-router + 资源 + 组件,stateProvider 找不到组件

带有angular1.5组件meteor和ui-router的动态标题

ui-router 中的 AngularJS 组件/范围问题

如何在 Angular 1.5 组件中等待来自 UI Router Resolve 的承诺

Angular ui-select2 - 隐藏组件的初始绘图/渲染