获取查询字符串形式$ location.search()对象/调用内部Angular方法

时间:2015-12-16 09:09:55

标签: angularjs

在Angular中,server { listen 80; server_name example.com www.example.com; location / { proxy_pass http://localhost:8080/app1/; proxy_set_header X-Real-IP $remote_addr; proxy_pass_header Set-Cookie; proxy_pass_header X-Forwarded-For; proxy_pass_header Host; } location /app2/ { proxy_pass http://localhost:8080/app2/; proxy_set_header X-Real-IP $remote_addr; proxy_pass_header Set-Cookie; proxy_pass_header X-Forwarded-For; proxy_pass_header Host; } } 返回一个易于修改的对象:添加新参数,更改或删除(设置为$location.search())现有参数。 null将此对象设置为$location.search(object)的{​​{1}}组件。我正在寻找一种方法来从这个对象中获取组合查询字符串,使search保持不变。我不需要获取实际的查询字符串,我需要撰写来自对象的查询字符串。

我不想重新发明轮子并编写一个javascript函数,将对象转换为& -separated键值对的字符串,Angular已经有一个。基本上我想要做的是使用toKeyValue中的Angular.js方法,该方法用于在$$compose中的location.js函数中撰写查询字符串。但是,看起来$location方法无法从Angular外部访问(例如,forEach不同),因为我在尝试调用时遇到$location错误。有没有办法从我的控制器调用toKeyValue方法,或者只是通过Angular从对象中编写查询字符串?

1 个答案:

答案 0 :(得分:3)

您可以使用$httpParamSerializer将对象转换为字符串。

这可以通过您的控制器完成。

app.controller('MainCtrl', function($scope, $httpParamSerializer) {
  var querystring = $httpParamSerializer({ width:1680, height:1050 }); //height=1050&width=1680
});