Angularjs URL参数作为查询参数传递

时间:2015-02-22 12:47:34

标签: angularjs angular-ui-router session-state-provider

我有一个$ state配置如下:

.state('app.subjects.current', {
    abstract: true,
    url: "/:subjectId",
    template: "<div ui-view />",
    ncyBreadcrumb: {
        skip: true
    }
})
.state('app.subjects.current.home', {
    url: '/home',
    templateUrl: "assets/src/subject/subjectHome.html",
    resolve: loadSequence('subjectHomeCtrl'),
    ncyBreadcrumb: {
        label: 'View'
    },
    string: 'sidebar.nav.pages.SUBJECTHOME'
})

我使用$ state.go转移到此状态(&#39; app.subjects.current.home&#39;,{subjectId:&#39; 999&#39;});

网址在地址栏中显示为“http://localhost:12253/#/app/subjects//home?subjectId=999”。它实际上应该是“http://localhost:12253/#/app/subjects/999/home”。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

created working example具有完全相同的映射 - 向您显示您的方法正在运作

所以,这些是状态

    .state('app', {
      template: '<div ui-view=""></div>',
    })
    .state('app.subjects', {
      template: '<div ui-view=""></div>',
    })
    .state('app.subjects.current', {
      abstract: true,
      url: "/:subjectId",
      template: "<div ui-view />",
      ncyBreadcrumb: {
        skip: true
      }
    })
    .state('app.subjects.current.home', {
      url: '/home',
      templateUrl: "assets/src/subject/subjectHome.html",
      //resolve: loadSequence('subjectHomeCtrl'),
      ncyBreadcrumb: {
        label: 'View'
      },
      string: 'sidebar.nav.pages.SUBJECTHOME'
    })

这样我们可以称呼他们

// $state.go
<button ng-click="$state.go('app.subjects.current.home', {subjectId: '999'});">

// ui-sref
<a ui-sref="app.subjects.current.home({subjectId: '888'})">

检查here。它应该有助于找出您的应用程序中的不同之处......