AngularJS ui-router状态不会遵循路由

时间:2015-02-21 16:54:31

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

这种语法有什么问题?

如果我点击此链接:#/ app / games / game / {{id}} / team
它重定向到:#/ app / games ,而不是转到上面的

gameitem.html模板:

<a class="tab-item" ng-href="#/app/games/game/{{id}}/team">Team</a>

呈现给:#/ app / games / game / 2 / team

路由状态:

&#13;
&#13;
.state('app.game', {
  url: "/games/game/:id",
  views: {
    'menuContent': {
      templateUrl: "templates/gameitem.html",
      controller: 'GameItemController'
    }
  }
})
.state('app.game.team', {
  url: "/games/game/:id/team",
  views: {
    'menuContent': {
      templateUrl: "templates/gameitem-team.html",
      controller: 'GameItemTeamController'
    }
  }
})
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

使用ui-sref,这样您可以直接指向您的州,这样您就可以更改网址,然后它会以模板方式为您处理:

<a class="tab-item" ui-sref="app.game.team({'id': id})">Team</a>

参考:

https://github.com/angular-ui/ui-router/wiki/Quick-Reference#ui-sref

Martin在评论中指出,childstate中的URL属性将使用过的值附加到父URL的URL中。用^作为前缀使其成为绝对路线。

参考:

https://github.com/angular-ui/ui-router/wiki/URL-Routing#url-routing-for-nested-states

答案 1 :(得分:1)

不要在ui-router中使用ng-href。而是使用ui-sref。

ui-sref="app.game.team({id:id})"

答案 2 :(得分:1)

你应该使用ui-sref,如前面的答案所述。但是你的问题是错误地定义了子状态的url。

&#39; app.game&#39;是父母州,&#39; app.game.team&#39;子状态 - 因为点符号(https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views#dot-notation)。 嵌套状态是url连接。正确的网址是app.game.team&#39;国家应该是&#34; / team&#34;仅(见https://github.com/angular-ui/ui-router/wiki/URL-Routing#url-routing-for-nested-states