如果用户在模态中单击ok,我想将其路由到一个url。在我的控制器中,我收到类似的URL
var newUrl = http://localhost:3000/#/dashboard
var newUrl = http://localhost:3000/#/users
作为变量。
如果我使用
$location.path(newUrl);
它不起作用。我也试过
$location.url(newUrl);
但是我的URL是这样编码的。
http://localhost:3000/#/#%2Fdashboard
有没有办法只获取url的路径?
编辑
此代码是服务的一部分。用户在表单中进行一些输入,然后单击另一个链接,例如菜单中的链接。然后出现一个弹出窗口,要求他跳过表单更改。如果他点击"是",我会得到请求的网址。这是我在服务器上的开发环境,当然它将是另一个url。所以我不能只使用
$location.path("/users")
例如
我在处理Angular preventDefault$locationChangeStart事件时遇到了同样的问题,强制保存,并且只有在成功时才重定向。我在控制器的主体中定义了以下功能:
var baseLen = $location.absUrl().length - $location.url().length;
function getPath(fullUrl) {
return fullUrl.substring(baseLen);
}
这似乎不是一个干净的解决方案,但作为一种变通办法,它确实起到了作用。如果你不知道你的URL指向同一个网站,RegEx可能对你更有效。
您可以使用$location.absUrl()
。
请参阅官方文档:在此处输入链接描述
此方法仅为getter。
返回完整的url表示,其中所有分段都根据RFC 3986中指定的规则进行编码。
我可以提供一个不同的解决方案吗:
$scope.$on('$locationChangeStart', function(e) {
if (meetsTheRequirementsToLeave()) {
return;
}
var newPath = $location.path();
e.preventDefault();
checkIfUserWantsToLeave().then(function() {
$location.path(newPath);
});
});
在该事件中,$location.path()
返回新路径。