Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改状态时不更新URL_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 更改状态时不更新URL

Javascript 更改状态时不更新URL,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,对于下面的代码,当我从“/login”页面转到“/quick”页面时,状态会随着内容而改变,但URL不会改变。我还注意到,当我从“/login”页面转到“/newsfeed”页面时,URL和状态都在变化。为什么会发生这种情况,我需要URL随状态变化 X.config(['$httpProvider', '$stateProvider', '$urlRouterProvider', '$locationProvider', function($httpProvider, $

对于下面的代码,当我从“/login”页面转到“/quick”页面时,状态会随着内容而改变,但URL不会改变。我还注意到,当我从“/login”页面转到“/newsfeed”页面时,URL和状态都在变化。为什么会发生这种情况,我需要URL随状态变化

    X.config(['$httpProvider', '$stateProvider', '$urlRouterProvider', '$locationProvider',
        function($httpProvider, $stateProvider, $urlRouterProvider, $locationProvider) {
            $urlRouterProvider.otherwise('/login');

            $stateProvider
                .state('app', {
                    template: '<div ui-view=""></diiv>'
                })
                .state('app.login', {
                    templateUrl: '../views/login/login.html',
                    controller:'LoginController'
                })
                .state('app.login.main', {
                    url: '/login',
                    templateUrl: '../views/login/login-main.html',
                    controller: 'LoginController'
                })
                .state('app.login.quiz_list', {
                    templateUrl: '../views/quiz/quiz_list.html',
                    controller: 'QuizListController',
                    url: '/quiz'
                })

               .state('app.front', {
                    templateUrl: '../views/user_utility/app.html',
                    controller: 'HeaderController'
                })
                .state('app.front.newsfeed', {
                    url: '/newsfeed',
                    templateUrl: '../views/user_utility/newsfeed.html',
                    controller: 'UserFeedController'
                });


        $httpProvider.interceptors.push('AuthInterceptor');
        $httpProvider.defaults.useXDomain = true;


    }
])
X.config(['$httpProvider','$stateProvider','$urlRouterProvider','$locationProvider',
函数($httpProvider、$stateProvider、$urlRouterProvider、$locationProvider){
$urlRouterProvider。否则('/login');
$stateProvider
.state('应用程序'{
模板:“”
})
.state('app.login'{
templateUrl:“../views/login/login.html”,
控制器:'LoginController'
})
.state('app.login.main'{
url:“/login”,
templateUrl:“../views/login/login main.html”,
控制器:“登录控制器”
})
.state('app.login.quick_list'{
templateUrl:“../views/quick/quick_list.html”,
控制器:“QuizListController”,
url:“/quick”
})
.state('app.front'{
templateUrl:“../views/user_utility/app.html”,
控制器:“HeaderController”
})
.state('app.front.newsfeed'{
url:“/newsfeed”,
templateUrl:“../views/user_utility/newsfeed.html”,
控制器:“UserFeedController”
});
$httpProvider.interceptors.push('AuthInterceptor');
$httpProvider.defaults.useXDomain=true;
}
])

发生这种情况是因为logn.main和login.quick\u列表的父状态都具有相同的父状态。这就是UI Routter在Angular.js中的工作方式

如果您有两个状态-S1和S2,S2是S1的子状态,当您转到S2时,URL将是S1/S2

您的“app”和“app.login”状态未指定任何URL,“app.login.main”状态的URL指定为“/login”,因此当您在该页面中时,URL应为“domain/#/login”。“app.login.quick_list”中测验页面的状态,其URL为“quick”。由于您的登录主页和测验页面具有相同的父状态(app.login是主列表和测验列表的父级),因此当您移动到此状态时,URL不会完全更改,只有“测验”将附加到URL。因此,测验页面中的URL应该是“域/#/login/quick”

但是,您的newsfeed页面有一个不同的父级-“app.front.newfeed”,其URL为“/newsfeed”。现在可以看到,app或front state都有任何URL,所以当您处于这种状态时,您的URL应该是“domain/#/newsfeed”

为了防止出现这种情况,我建议将测验列表移动到另一个级别。您的状态层次结构应该如下所示:

  • 应用程序
    • 登录
      • 主要
    • 正面
      • 新闻提要
      • 测验清单
就代码而言,它应该是

app.state('app', ...)
app.state('app.login', ...)
app.state('app.login.main', ...)  //URL - /login
app.state('app.front', ...)
app.state('app.front.quiz_list', ...)  //URL - /newsfeed
app.state('app.front.newsfeed', ...)  //URL - /quiz

您能显示用于更改状态的标记吗?或者是拉小提琴?