Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Angularjs 角度UI路由,刷新时页面自动重定向到父状态_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 角度UI路由,刷新时页面自动重定向到父状态

Angularjs 角度UI路由,刷新时页面自动重定向到父状态,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我在一个项目中使用了AngularUI路由。当我尝试刷新网页或直接输入URL时,它被重定向到父状态。它确实加载了我重新加载的URL的状态,但随后会快速重定向到父状态。这是我的州路线 $stateProvider .state('home', { url: "", views: { "home": { templateUrl: root_url + "home" },

我在一个项目中使用了AngularUI路由。当我尝试刷新网页或直接输入URL时,它被重定向到父状态。它确实加载了我重新加载的URL的状态,但随后会快速重定向到父状态。这是我的州路线

$stateProvider
    .state('home', {
        url: "",
        views: {
            "home": {
                templateUrl: root_url + "home"
                },
            },
        })
    .state('home.store', {
        url: "/store",
        views: {
            "store": {
                templateUrl: root_url + "store"
                },
            },
        })
    .state('home.store.storecontent', {
        views: {
            "storecontent": {
                templateUrl: root_url + "storecontent"
                }
            }
        })

假设当前我处于home.store.storecontent状态。如果我在这里刷新页面,在重新加载当前状态后,它会将我重定向到主状态的父状态。我想避免这种情况

我们通常有两种选择。第一个是为child定义url,第二个是-make parent abstract,这意味着它是默认的child

第一种方法有两种

如果我们希望保持父项“home.store”和子项“home.store.storecontent”非抽象,我们必须为它们定义唯一的url,例如:

.state('home.store', {
    url: "/store",
    ...
    })
.state('home.store.storecontent', {
    url: "/content",
    ...
    })
现在我们有两个链接:

<a href="#/store">
<a href="#/store/content">
检查一下


如果'home.store'不应该是抽象的,我们应该给它的子项提供一些非空的url-为了区分这两个…

您使用的是ui sref和md活动的md选项卡吗

如果是,问题是md active fire单击选项卡,则会重定向到父状态


我曾经遇到过这个问题,现在通过在每个状态更改成功事件上缓存或存储当前状态名,并且在刷新时,如果登录有效,可以从中加载,就可以解决这个问题

$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {//You can save your storing state name function here}

也许可以在home.store.storecontent中添加一个URL?我在发布问题之前也尝试了同样的方法。不幸的是,它无法工作。如果没有URL,则无法刷新状态。我还会将您的“home”URL更改为“/”我不想将home.store抽象化。我希望在刷新包含子状态的某些页面时避免重定向到父状态。问题是,该子状态没有定义URL。这意味着,如果刷新,浏览器将从头开始。它必须初始化UI路由器,传递URL。UI路由器将发现。。啊哈。。。它是#/商店。。。它的意思是“家。商店”-并将初始化它。所以正如我指出的,你们有两个选择1)使父对象抽象化-将直接选择子对象2)为子对象定义唯一的url…我扩展了我的答案,并展示了这两种方法。希望它能帮助你;)享受UI RouterI为每个州定义了唯一的URL。但它仍然不起作用。当我将根状态(home)定义为抽象时,主页本身不会被加载。当我查看网络调用时,所有AJAX调用和当前状态的HTML模板都已加载。在这之后,页面被重定向到父状态。看,我尽了最大努力,为你们创建了几个可用的掠夺物。他们确实遵循您的解决方案,并开展工作。我建议。。比较一下。试着把它们变成你的。。它将揭示出什么是错误的。。。希望这会有所帮助
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {//You can save your storing state name function here}