AngularJS UI 路由器 : Get the absolute URL of the state with the parameters

标签 angularjs angular-ui-router

我希望能够在不更改状态的情况下更改地址的 URL,以防止重新渲染。根据我的搜索,ui-router 目前不提供此功能,但来自 anuglar 的 $location.path 提供了。

所以,很自然地,我想使用 $state.get(stateName) 来访问州的 URL,这样我就不用手动输入 URL。

我有两个问题:

  1. $state.get(stateName) 仅返回相对路径。如何获取绝对路径?
  2. 它还返回状态的定义,但参数未定义。如何获取带有参数的 URL?

例如,如果我有一个名为 user.home.view 且带有 user.home 的状态,则我的状态定义为

'user': {
     abstract: true,
     url: '^/users/'
},
'user.home': {
     url: ''
},
'user.home.view': {
     url: ':id/'
}

现在,$state.get(user.home.view).url 返回:id/。如何获取完整的 URL(即 /users/5/)?

最佳答案

您应该使用$state.href()

  1. 要获取绝对 URL,您可以使用:

    $state.href('user.home.view', {}, {absolute: true});

  2. 要获取包含适当参数的 URL,您需要将它们添加为第二个参数

关于AngularJS UI 路由器 : Get the absolute URL of the state with the parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24502065/

相关文章:

javascript - Angular Controller 的属性在其功能之外不可访问

angularjs - 为什么在 Angular 中使用 ng-src 时必须使用表达式?

angularjs - 如何在 Visual Studio Code 中为自定义 angularjs 模块添加智能感知?

angularjs - Firebase 与 AngularFire

javascript - 为什么 $state.go 在目标状态或其父级通过 promise 解析时不起作用

javascript - $state.go 在 app.run 中的 $stateChangeStart 内不起作用

javascript - 如何将这个 moment.js 代码从 node.js 运行到 angular.js Controller ?

javascript - AngularJS module.controller 与 $controllerProvider.register

angularjs - 刷新解析数据 - Ui 路由器

javascript - 用户界面路由器 : Best way to initialize variables when state is accesed