从其他地方跳转过来的地址类似于
http://www.test.com/#/login?mustLogin=1&returnUrl=http:%2F%2Fwww.back.com%2F#%2Fback
编码前是
http://www.test.com/#/login?mustLogin=1&returnUrl=http://www.back.com/#/back
然后我的$stateProvider是
$stateProvider.state("login", angularAMD.route({
url: "/login?mustLogin&returnUrl",
templateUrl: "/login/module/auth/views/login.html",
controller: "loginController"
}));
然后我在loginController里
console.log($stateParams);
得到
Object {mustLogin: "1", returnUrl: "http://www.back.com/"}
可以查看出#之后的字符丢失了,
我希望能获取到returnUrl完整的值
修正:
首先,$stateProvider
写的不对,url
不用那么写
$stateProvider.state("login", angularAMD.route({
url: "/login",//query parameters 不需要指定,因为是可选参数
templateUrl: "/login/module/auth/views/login.html",
controller: "loginController"
}));
其次,你说的从其他地方跳过来的url
也不对,如果正确使用了encodeURIComponent
API,returnUrl
应该是这样的http%3A%2F%2Fwww.back.com%2F%23%2Fback
,里面不会出现#
。你得去检查跳转你url
的地方是否处理错误了
应该在跳转前对returnUrl
的值进行encodeURIComponent
编码,当使用$stateParams
获取到参数的值之后,再使用decodeURIComponent
进行解码应该就可以了