我正在使用Angular和UI路由器。我试图获取用户可以复制和共享的页面上显示的链接。 This thread告诉我$state.href
是我正在寻找的功能,但它并没有生成正确的链接。
这里的一个重要细节是我的应用程序的根不是域的根。在这种情况下,域名为localhost
,但角度应用的根目录位于localhost/dev/app/
。
这是我在控制器内部使用的命令。
$scope.url = $state.href('survey', { survey: "asd" }, {absolute: true});
在我的app.js中,声明了以下路由:
.state('survey', {
url: "/:survey/survey?ao",
templateUrl: "views/survey/survey.html",
controller: "surveyController",
},
data: {
requireLogin: false,
requireAdmin: false
}})
这应返回http://localhost/dev/app/#/asd/survey
,而是返回http://localhost/#/asd/survey
。
(值得注意的是,ui-sref="survey({survey: "asd"})
确实会转换为正确的链接。)
有没有办法解决这个问题,所以我得到了完整的网址?
答案 0 :(得分:3)
在我的应用页面添加base
标记为我解决了这个问题。它定义了具有路由器引用的页面的基本URL。出于传统支持的原因,我在Angular UI路由器的0.2.15版本上。我不知道这对于更新版本是否仍然是必要的。
<base href="http://localhost/dev/app/" />
答案 1 :(得分:0)
.state('survey', {
url: "/:survey/survey?ao",
templateUrl: "views/survey/survey.html",
controller: "surveyController",
data: {
requireLogin: false,
requireAdmin: false
}
})
你有一个额外的&#39;},&#39;在控制器之后,也许那是弄乱的事情?此外,如果您传递参数,您可能希望将其包含在参数行中:
params: {
survey: null
}
此外,如果您想要网址http://localhost/dev/app/#/asd/survey,您的网址应为:
url: "dev/app/:survey/asd/survey"