因此,我正在尝试使用一个简单的流星应用程序来搜索数据库。我只有一个输入框,可以从其中输入以下代码进行搜索查询:
Template.search.events = {
'keydown input#search' : function (event) {
if (event.which == 13) {
var item = document.getElementById('search');
Template.results.results(item.value)
//console.log(item);
item.value = '';
}
}
}
我将搜索查询传递给另一个函数,该函数应该查询mongodb并将结果打印在模板中:
Template.results.results = function (item) {
return Products.find({sku: item});
}
但是,它永远找不到商品!如果我在Chrome的控制台中运行相同的查询,则该查询有效。如果我将代码中的{sku:item}替换为(例如){sku:“ A2277”}(在我的数据库中),那么它将起作用!如果我在Template.results.results函数内部创建一个新变量,例如var item =“ A2277”,它也可以工作。这里发生了什么?!
模板助手被设计为由您的模板而不是由事件处理程序直接调用。您的代码仅要求查询发生并返回值,但它与模板没有任何关系。相反,您应该使用如下会话变量:
Template.results.results = function() {
return Products.find({sku: Session.get('itemSku')});
};
然后,在事件处理程序中,您可以执行以下操作:
Template.search.events({
'keydown input#search': function(event) {
if (event.which === 13) {
var $item = $('#search');
Session.set('itemSku', $item.val());
$item.val('');
}
}
});
注意,我在这里使用jQuery来设置/获取项目值。无论如何,那应该设置会话变量并以反应方式重绘结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句