具有角度ui-router的md-tabs不呈现孙子孙女

时间:2017-03-13 20:58:08

标签: angularjs angular-ui-router angular-material

我正在使用Angular 1.6.2和Angular Material 1.3,并且使用了相当多的组件。我有一个外部的“appComponent”,它包装了应用程序的其余部分,并提供了一个带有导航的页眉工具栏,一个页脚,然后我的顶层应用程序组件加载到应用程序组件内的ui-view中。

我的一个组件是客户维护页面,在选项卡1的选项卡中有一个列表,然后在选项卡2上有客户特定的详细信息。

选项卡2通过包含多个选项卡的ng-include加载另一个模板。其中一些选项卡包含子数据,我想延迟加载它们,所以我为它们创建了这样的状态:

 .state('customers', {
                url: "/customers",
                templateUrl: "components/customer/index.html",
                role: "customers",
                resolve: { authenticate: authenticate }
            })
            .state('customers.customer', {
                url: "/{customerId}",
                templateUrl: "components/customer/index.html",
                role: "customers - edit",
                view: "customerdetail",
            })
            .state('customers.customer.acknowledgements', {
                url: "/acknowledgements",
                templateUrl: "components/customer/customerAcknowledgements.html",
                view: "customeracknowledgements",
                onEnter: function() {
                    debugger
                }
            })
            .state('customers.customer.importinstructions', {
                url: "/importinstructions",
                templateUrl: "components/customer/customerImportInstructions.html",
                role: "customers - edit",
                view: "customerImportInstructions",
            })
            .state('customers.customer.orderhistory', {
                url: "/orderhistory",
                templateUrl: "components/customer/customerOrderHistory.html",
                // parent resolve is inherited. Not implementing
                view: "customerOrderHistory",
            })

html使用每个视图的name参数包含ui-view,如下所示:

        <md-tabs md-dynamic-height class="md-primary" md-no-select-click md-selected="selectedTab">
            <md-tab label="General Info">
                <!-- content removed for the sake of brevity -->
            </md-tab>
            <md-tab>
                <md-tab-label><span ui-sref="customers.customer.acknowledgements">Acknowledgements</span></md-tab-label>
                <md-tab-body>
                    <div ui-view name="customeracknowledgements"></div>
                    <!--<div ui-view></div>-->
                </md-tab-body>
            </md-tab>
            <md-tab layout-fill ui-sref="customers.customer.importinstructions" label="Import Instructions" md-on-select="$ctrl.selectTab('customers.customer.importinstructions')">
                <md-tab-body>
                    <div ui-view name="customerImportInstructions"></div>
                </md-tab-body>
            </md-tab>
            <md-tab label="Order History" ui-sref="customers.customer.orderhistory" md-on-select="$ctrl.selectTab('customers.customer.orderhistory')">
                <md-tab-body>
                    <div ui-view=n ame "customerOrderHistory">
                    </div>
                </md-tab-body>
            </md-tab>
        </md-tabs>

我尝试过各种各样的事情。我知道状态也被导航了,因为我已经在每个状态上的customeracknowledgements状态上使用了onEnter函数,并为每个状态触发。此外,如果我在Chrome开发者工具中观看网络标签,则会在我导航到包含标签时进行XHR调用以检索每个模板,但任何标签上都不会显示任何内容。

我用Google搜索了*#%!出于这一点,阅读并尝试了我能找到的一切,但没有任何帮助。任何想法,将不胜感激。

1 个答案:

答案 0 :(得分:1)

我能够通过改变这样的视图语法来实现这个目的:

            .state('customers.customer.acknowledgements', {
                url: "/acknowledgements",
                role: "customers - edit",
                views: { "customeracknowledgements": 
                    { templateUrl: "components/customer/customerAcknowledgements.html" } },
            })

以及在模板正文中加载模板并保留所有动画效果的最简洁方法似乎是:

            <md-tab label="Acknowledgements" ui-sref="customers.customer.acknowledgements">
                <md-tab-body>
                    <div ui-view name="customeracknowledgements"></div>
                </md-tab-body>
            </md-tab>