离子框架在开始时重定向到家

时间:2016-03-08 12:59:37

标签: javascript angularjs ionic-framework angular-ui-router router

我正在构建一个带离子的移动应用程序,我面临着一个奇怪的问题。 如果我重新加载页面(F5),请说" / tabs / connected / channel / edit"我总是被重定向到" / tabs / home" (在国家解决后)。

PS:解决阶段是正确的执行,我从不拒绝它。然后在承诺解决时,我总是被重定向到/ tabs / home。

这是我的配置块:

.config(function($stateProvider, $urlRouterProvider) {
    var userResolve = function(user, $q, $auth) {

        if (!$auth.isAuthenticated()) {
            return $q.resolve();
        }
        if (user.loaded) {
            return $q.resolve();
        }
        return user.blockingRefresh();
    };

    // Ionic uses AngularUI Router which uses the concept of states
    // Learn more here: https://github.com/angular-ui/ui-router
    // Set up the various states which the app can be in.
    // Each state's controller can be found in controllers.js
    $stateProvider

    // setup an abstract state for the tabs directive
        .state('tabs', {
            url: '/tabs',
            abstract: true,
            templateUrl: 'templates/tabs.html'
        })
        .state('tabs.home', {
            url: '/home',
            views: {
                'home-tab': {
                    templateUrl: 'templates/home.html',
                    controller: ''
                }
            }
        })
        .state('tabs.account', {
            url: '/account',
            views: {
                'account-tab': {
                    templateUrl: 'templates/account/account.html',
                    controller: 'AccountController'
                }
            },
            resolve: {
                userData: userResolve
            }
        })
        .state('tabs.login', {
            url: '/account/login',
            views: {
                'account-tab': {
                    templateUrl: 'templates/account/login.html',
                    controller: 'AccountController'
                }
            }
        })
        .state('tabs.register', {
            url: '/account/register',
            views: {
                'account-tab': {
                    templateUrl: 'templates/account/register.html',
                    controller: 'RegisterController'
                }
            }
        })
        .state('tabs.connected', {
            url: '/connected',
            abstract: true,
            views: {
                'account-tab': {
                    templateUrl: "templates/connected.html"
                }
            },
            resolve: {
                userData: userResolve
            }
        })
        .state('tabs.connected.channel-create', {
            url: '/channel/create',
            templateUrl: 'templates/channel/create.html',
            controller: 'CreateChannelController'
        })
        .state('tabs.connected.channel-edit', {
            url: '/channel/edit',
            templateUrl: 'templates/channel/edit.html',
            controller: 'EditChannelController'
        });



    // if none of the above states are matched, use this as the fallback
    $urlRouterProvider.otherwise('/tabs/account');

})

这是tabs.html:

<ion-tabs class="tabs-assertive tabs-icon-top">

<ion-tab title="Home" ui-sref="tabs.home" icon-on="ion-ios-filing" icon-off="ion-ios-filing-outline">
    <ion-nav-view name="home-tab"></ion-nav-view>
</ion-tab>

<ion-tab title="Account" ui-sref="tabs.account" icon-on="ion-ios-gear" icon-off="ion-ios-gear-outline">
    <ion-nav-view name="account-tab"></ion-nav-view>
</ion-tab>

我必须确切地说,我从不使用$ state.go(&#39; / tabs / home&#39;)我根本就是我的代码。我很有信心。 即使我重新加载应用程序,我的目标是保持相同的路线。 (这个问题在某些州没有发生,我不知道为什么,因为他们没有做出与有问题的不同的事情。)

谢谢!

1 个答案:

答案 0 :(得分:0)

我在Angular Ui-Router中也遇到了这种类型的错误。

以下解决方案对我有用。

也可以改变它

    .state('tabs.connected.channelcreate', {
        url: '/channelcreate',
        templateUrl: 'templates/channel/create.html',
        controller: 'CreateChannelController'
    })

url应该是

    "/tabs/connected/channeledit"

它会起作用。