【问题标题】:Multiple Views in one Tab一个选项卡中的多个视图
【发布时间】:2015-12-30 21:46:16
【问题描述】:

这是我正在尝试做的一个简单示例。
我有 2 个选项卡(主页和新闻)和 3 个视图(主页、新闻和详细信息)。 当我单击主页和新闻选项卡时,它分别显示主页和新闻页面。
这是我的路由文件:

.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
    .state('tabs', {
        url: '/tabs',
        abstract: true,
        templateUrl: 'templates/tabs.html',
    })
    .state('tabs.home', {
        url: '/home',
        views: {
            'home-tab': {
                templateUrl: 'templates/home.html',
                controller: 'HomeCtrl'
            }
        }
    })
    .state('tabs.news', {
        url: '/news',
        views: {
            'news-tab': {
                templateUrl: 'templates/news.html',
                controller: 'NewsCtrl'
            }
        }
    })
    .state('tabs.details', {
        url: '/details',
        views: {
            'details-tab': {
                templateUrl: 'templates/details.html',
                controller: 'DetailsCtrl'
            }
        }
    })
$urlRouterProvider.otherwise('/tabs/home');         

这是我的标签视图:

<ion-tabs class="tabs-icon-top tabs-positive ">
    <ion-tab title="Home" icon="ion-home" ui-sref="tabs.home">
        <ion-nav-view name="home-tab"></ion-nav-view>   
    </ion-tab>  
    <ion-tab title="News" icon="ion-social-reddit" ui-sref="tabs.news">
        <ion-nav-view name="news-tab"></ion-nav-view>   
    </ion-tab>  
</ion-tabs>

我觉得没问题... 现在我想从新闻页面转到详细信息页面。所以我在新闻页面中添加了一个按钮,如下所示:

<ion-view view-title="News">
    <ion-content class="padding content-stable">
        <button class="button button-positive" ui-sref="tabs.details">Go to Details</button>
    </ion-content>  
</ion-view>

当我单击按钮时,我仍然在同一页面上,并且我的视图保持不变。很奇怪……但是,我浏览器中的 URL 变成了

http://localhost:8101/#/tabs/details

这证明状态发生了变化。我可能错过了一件事……但是什么???

【问题讨论】:

    标签: angularjs ionic angular-ui-router


    【解决方案1】:

    我找到了自己问题的答案!
    这是一个路由错误...
    为此,tabs.details 状态必须与父选项卡具有相同的视图名称。

    .state('tabs.news', {
        url: '/news',
        views: {
            'news-tab': {
                templateUrl: 'templates/news.html',
                controller: 'NewsCtrl'
            }
        }
    })
    .state('tabs.details', {
        url: '/details',
        views: {
            'news-tab': { // SAME VIEW NAME!!! 
                templateUrl: 'templates/details.html',
                controller: 'DetailsCtrl'
            }
        }
    })
    

    【讨论】:

    • 谢谢!也有这个问题,但有一件事对我来说仍然有点奇怪。我在浏览器中测试我的应用程序,当我导航到 /details 例如,应用程序认为这是父级。
    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 2011-05-21
    • 2015-11-24
    相关资源
    最近更新 更多