1

我正在开发 Node/Express/Jade 环境中的应用程序。

假设我启动了我的应用程序,并将我的浏览器定向到这个 URL:

/superadmin/?year=2012

在此页面上,我找到了一个包含对象的列表,按默认顺序排序。这里还有一个链接,它将以另一个顺序重新排序列表对象。我玉这个链接看起来像:

a(href = '?sortAfter=company&ascending=1') Company

如果我按下此链接,我按照我想要的方式对项目进行排序,但之前查询字符串中的 ?year=2012 将丢失。

问题:如何重新编写此链接以添加新的查询字符串,而不是替换它。

4

2 回答 2

1

遇到了同样的问题,我是这样解决的:

通过 现在在您的路线中安装https://npmjs.org/package/URIjs :npm install URIjs

var URI = require('URIjs');
app.get('/', function(req, res) {;
    res.render('views/index.jade', {
        urlHelper: function (key, value) {
           return (new URI(req.url)).setQuery(key, value);
        }
    });
};

在翡翠中:

a(href=linkHelper('acesnding',1)) Company
于 2014-01-29T13:38:33.890 回答
0

出于这个原因,我想出了自己的 npm 包-> https://www.npmjs.com/package/qsm

例子:

var qsm = require('qsm');

app.get('/', (req, res) => {
    res.render('views/index.jade', {
        addQueryString: (key, value) => {
            return qsm.add(window.location.href, [{ query: key, value }]);
        }
    });
});

和玉

a(href= addQueryString('acesnding',1)) Company

请参考 qsm 中的自述文件,您会看到附加查询字符串、删除特定查询字符串甚至解析等等是多么容易!

您甚至可以清除、删除和替换查询字符串。最重要的是,它不必是 URL,它可以是您能想到的任何字符串,但它的行为就像该字符串是一个 url 并将查询字符串附加到它:例如:?key=value&key=value取决于已经存在的内容.

于 2017-01-18T07:31:55.203 回答