【发布时间】:2015-08-30 08:35:32
【问题描述】:
我的当前路线如下:
Router.route('/:arg', function(){
this.render('tmpResults', {
data: function(){
return hcDrefs.find({name: {$regex: this.params.query.q}})
}
});
}, {name: 'showSome'});
如您所见,查询是硬编码的,实际上只接受一个输入(见下面的块)。我想要做的是执行这条路线,其中查询对象需要是可变形式的......有时我只需要一个简单的查询,其他时候,查询可能包含一个 AND 操作。我目前将此路线称为:
Router.go('showSome', {arg: 1},
{query: '?q=' + e.target.value});
}
...我想知道的是我是否可以以某种方式将某种查询对象传递给路由,但我似乎还没有找到有效的语法....甚至不确定它是否可以工作.我已经尝试了一些蛮力的东西,比如定义一个查询对象:
query_object = {name: {$regex: pattern}}
并尝试以某种方式将其发送到路由器:
Router.go('showSome', {arg: 1},
{query: query_object});
}
//----------------------------------------------------------
Router.route('/:arg', function(){
this.render('tmpResults', {
data: function(){
return hcDrefs.find(this.params.query.q}})
}
});
}, {name: 'showSome'});
但这似乎是不行的。
什么是设置路由的数据上下文的好方法,其中产生数据上下文的查询可能是可变形式的?我认为全局对象可能会起作用,但我很好奇是否有一种更具战略性的方式通过路由器。我仍在挖掘 Iron router 文档以寻找可以连接的东西。
【问题讨论】:
-
没有客户端 POST,因此您可以传递给客户端路由的数据受限于您可以放入 URL 中的内容(类似于 GET 请求)。所以,不,我不这么认为。您仅有的两个选择是将 JSON 对象字符串化到 URL 中(如果对象很小),或者使用全局变量或会话变量。
标签: meteor routing iron-router