【发布时间】:2016-10-14 20:19:49
【问题描述】:
const createParam = (key, value) => '?'+key+'='+value;
const rebuildUrl = (linkUrl, params) => {
TagsFactory.resetTickerTags();
console.log('params', params);
_.each(params, (param)=> {
linkUrl += createParam(param.key, param.value);
});
console.log('linkUrl', linkUrl);
// window.location.href = linkUrl;
$location.search(linkUrl);
};
const checkForStoredLink = () => {
Util.notEmpty(storedLinkParams) ? rebuildUrl('', storedLinkParams) : null;
};
storedLinkParams = [
{ key: "ticker",
value: "AAPL" },
// etc...
我上面的函数将接收 params 数组并生成如下字符串:
/dashboard?ticker=AAPL?sort=trend?timespan=day?term_id_1=3010695?start_epoch=1473186060?end_epoch=1473358860
我当前的网址如下所示:
http://localhost/static/dashboard/app/#/dashboard?
一旦我上面的函数到达$location.search 行,它最终看起来像这样,这会破坏 UI:
http://localhost/static/dashboard/app/#/dashboard?%3Fticker=AAPL%3Fsort%3Dtrend%3Ftimespan%3Dday%3Fterm_id_1%3D3010695%3Fstart_epoch%3D1473186060%3Fend_epoch%3D1473358860
【问题讨论】:
-
为什么不用
&分隔参数呢?如果你使用&,你可以传递.search一个对象而不是自己构建字符串 -
const createParam = (key, value) => '?'+key.trim() + '=' + value.trim(); -
@MatthewMcveigh 哦,所以
$location.search正在寻找对象? -
@gr3g 谢谢,但是
trim没有做任何事情,linkUrl变成的字符串已经很干净了。这就是我想要替换搜索的内容。 -
@LeonGaban 它也可以采用字符串,但希望参数由
&分隔
标签: javascript angularjs url params