我正在尝试使用mongodb关注流星上的两个集合,我的解决方案是在输入上打印一个值,然后获得该值,并在另一个集合上进行特定查找并且热情地神奇地相关,我知道那种基本但是我能做到的所有我猜对了吗?所以我的问题是,当我试图让这个输入值始终是相同的时候,好像在帮助器idk上有一个问题,这是de code我在哪里'我试图获得de输入值,是在渲染模板上
el.addEventListener( 'click', function( ev ) {
classie.add( modal, 'md-show' );
overlay.removeEventListener( 'click', removeModalHandler );
overlay.addEventListener( 'click', removeModalHandler );
Tracker.autorun(function(){
valueInputCliente = $("#inputCliente").val();
Session.set("valorInput",valueInputCliente)
console.log("el valor del input es " + valueInputCliente);
});
if( classie.has( el, 'md-setperspective' ) ) {
setTimeout( function() {
classie.add( document.documentElement, 'md-perspective' );
}, 25 );
}
});
close.addEventListener( 'click', function( ev ) {
Tracker.autorun(function(){
var valorInput = Session.get("valorInput")
valorInput = $("#inputCliente").empty();
console.log("el valor del input ahora es " + valorInput)
});
ev.stopPropagation();
removeModalHandler();
});
所以在这个函数中当有人打开元素时应该得到输入,然后当关闭元素时值为empy,但只是使用mongo的第一个值,所以我希望已经清楚了,你可以帮助我对不起我的英语,我尽我所能。
答案 0 :(得分:0)
嗯,我不确定,我理解了一切并解决了你的问题。但我仍然有一些评论,也许还有一个解决方案。
首先,如果你正在使用meteor,为什么不使用流星的思维方式,我的意思是你用JavaScript在两个元素上放置一些点击事件,但在meteor中你可以用这样的模板绑定它们:
Template.mytemplate.events({
'click el':function(e){
//do stuff
},
'click close':function(e){
//do stuff
}
});
但问题不在这里。 其次,您在第一个事件处理程序中使用Tracker.autorun(...)。因此,当依赖项发生变化时,您希望重新运行该函数。但我无法在Tracker.aurtorun函数中看到一个被动数据源。 如果我理解正确的文档:
Tracker.autorun允许您运行依赖于被动数据源的函数,以便以后如果数据发生更改,该函数将重新运行。
您需要一个反应式数据源来重新运行您的功能,
valueInputCliente = $("#inputCliente").val();
不是,我找不到使其成为反应数据源的代码。 (但有可能) 并且Session.set也不是(但Session.get是!)。 session docs
所以也许这是你的问题,这个功能不会重新运行。所以你是第二个事件处理程序,这是好的,因为它取决于一个被动数据源:
var valorInput = Session.get("valorInput")
不会重新运行,因为valorInput不会更改多次(第一次)。
因此,您需要在第一个处理程序中放置一个反应数据源,以便在需要时触发您的功能。我不确定我是否回答了你的问题,但希望它有所帮助!