Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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 使用AngularJS ui路由器深度链接到URL的问题_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 使用AngularJS ui路由器深度链接到URL的问题

Javascript 使用AngularJS ui路由器深度链接到URL的问题,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我刚刚遇到了一个问题,这似乎是由于我更改了应用程序的文件夹结构而引起的(但我认为这是一个“红鲱鱼”)。我有一个小AngularJS应用程序,为了整理东西,我将一部分功能移到了它自己的文件夹中。我更新了我的$stateProvider部分中的所有标记引用、所有视图模板URL值。。。我没有收到404错误,所有控制器和视图都已加载,但我注意到,在我的应用程序中,我无法直接链接到特定的URL(我以前可以)。我希望直接/深度链接到的URL是 当我在浏览器中输入这个时,我会得到一个gethttp://mya

我刚刚遇到了一个问题,这似乎是由于我更改了应用程序的文件夹结构而引起的(但我认为这是一个“红鲱鱼”)。我有一个小AngularJS应用程序,为了整理东西,我将一部分功能移到了它自己的文件夹中。我更新了我的
$stateProvider
部分中的所有
标记引用、所有视图
模板URL
值。。。我没有收到404错误,所有控制器和视图都已加载,但我注意到,在我的应用程序中,我无法直接链接到特定的URL(我以前可以)。我希望直接/深度链接到的URL是

当我在浏览器中输入这个时,我会得到一个
gethttp://myapp.com/an/membership/ 403(禁止)
错误。路由有4个子状态/URL。我可以深入链接到所有这些。更糟糕的是,如果我的应用程序中有链接(使用
ui-sref
),我可以毫无问题地链接到我的状态/url。。。这是我的州/路线代码。。。我添加了一些注释来解释我的问题

/* This is the parent state of my membership state !! */    
.state('sfm.in', {
  abstract: true,
  url: '/an/',
  templateUrl: '/an/views/member-home/member-home-wrapper.html'
})
/* here the url is http://myapp.com/an/membership - I can link to it using ui-sref but can't deep link, I get a "403 forbidden", everything loads as expected (not sure if I need the abstract). */
      .state('sfm.in.membership', {
        url: 'membership', 
        templateUrl: '/an/membership/views/membership.html',
        controller: 'MembershipCtrl',
        abstract: true
      })
      /* this child state is a default and has the same URL as the parent - http://myapp.com/an/membership*/
      .state('sfm.in.membership.advantages', {
        url: '',
        templateUrl: '/an/membership/views/membership-advantages.html'
      })
      /* No problem with deeplinking - http://myapp.com/an/membership/payment */
      .state('sfm.in.membership.payment', {
        url: '/payment',
        controller: 'MembershipPaymentCtrl',
        templateUrl: '/an/membership/views/membership-payment.html'
      })
      /* No problem with deeplinking http://myapp.com/an/membership/account */
      .state('sfm.in.membership.account', {
        url: '/account',
        controller: 'MembershipAccountCtrl',
        templateUrl: '/an/membership/views/membership-account.html'
      })
      /* No problem with deeplinking http://myapp.com/an/membership/data */
      .state('sfm.in.membership.data', {
        url: 'data',
        controller: 'MembershipDataCtrl',
        templateUrl: '/an/membership/views/membership-data.html'
      });
我已经在我的应用程序中正确设置了
$locationProvider.html5Mode
(我可以在浏览器中键入其他url的url)


有人看到这里有问题吗*更新*我在路由示例中添加了父状态,请查看我在第一个答案中的评论

您在第一个状态中忘记了“/”:

.state('sfm.in.membership', {
    url: '/membership', 
    templateUrl: '/an/membership/views/membership.html',
    controller: 'MembershipCtrl',
    abstract: true
})

这似乎很奇怪,但我认为问题在于浏览器在我输入url时预先设置了url。我终于改变了密码,所以。。。但是这里没有真正的变化。。。我认为浏览器是问题所在。与此同时,我更改了URL,但是清除历史记录/缓存也可以解决这个问题

  .state('sfm.in.membership', {
    abstract: true,
    url: 'member-ship',
    templateUrl: '/an/membership/views/membership.html'
  })
  .state('sfm.in.membership.advantages', {
    url: '',
    templateUrl: '/an/membership/views/membership-advantages.html'
  })
  .state('sfm.in.membership.payment', {
    url: '/payment',
    controller: 'MembershipPaymentCtrl',
    templateUrl: '/an/membership/views/membership-payment.html'
  })
  .state('sfm.in.membership.account', {
    url: '/account',
    controller: 'MembershipAccountCtrl',
    templateUrl: '/an/membership/views/membership-account.html'
  })
  .state('sfm.in.membership.data', {
    url: '/data',
    controller: 'MembershipDataCtrl',
    templateUrl: '/an/membership/views/membership-data.html'
  })

然而,我最初认为,当我添加正斜杠时,url“”不起作用,但“”起作用了?您在哪里声明了:/an的状态?我刚刚更新了示例。。。添加了“an”路线!必须删除最后一个“/”。尝试url:“/an”使用此选项,它必须工作:.state('sfm.in',{abstract:true,url:'/an',templateUrl:'/an/views/member home/member home wrapper.html'})。state('sfm.in.membership',{url:'/membership',templateUrl:'/an/membership/views/membership.html',controller:'MembershipCtrl',abstract:true})总是同样的错误吗?403?