我正在开发一个SPA AngularJs应用程序,它必须处理一些特定的遗留URL。
我正在使用基本的$ routeProvider工作正常,但有一个例外:当我调用一个特殊的网址时
主机:端口/应用/ index.html中#/产品特征=合约类型=忠诚&安培; SN =值安培;过滤器= 2351&安培; 20
控制器被调用两次:
第一次使用正确的查询字符串: features = contracttype = loyalty& sn = value& filter = 2351& 20
第二次修改查询字符串:
功能=合约类型&安培; SN =值安培;过滤器= 2351
我已将调试代码放在$ routeProvider.config函数和
中.when('/products',
{
controller: 'ProdCtrl',
templateUrl: 'partials/prod.html'
})
被调用两次,但只有当我有这种特殊类型的URL时才会被调用。
当我有一个常规的qs时,其他一切正常,比如?param1 = value2& param2 = value2 ...
我的问题是如何才能获得查询字符串未修改,为什么控制器会初始化两次?
我必须要知道我无法更改查询字符串(由于遗留问题),我所能做的就是将其传递给后端应用程序。
答案 0 :(得分:0)
答案 1 :(得分:0)
您的原始查询字符串不正确,它不能是a = b = c,因此路由器会尝试按其认为最佳方式对其进行更正。
答案 2 :(得分:0)
我认为实现这一目标的唯一方法是编码你的网址,因为有两个等于它是无效的。
var newUrl = encodeURIComponent("...?features=contracttype=loyalty&...");