尝试关联两个获得输入值的集合

Trying to relate two collections getting an input value

本文关键字:输入 集合 两个 关联      更新时间:2023-09-26

我正在尝试使用 mongodb 将流星上的两个集合联系起来,好吧,我的解决方案是在输入上打印一个值,然后获取该值并在另一个集合上做和特定查找,并神奇地联系在一起,我知道有点基本,但我能做的都是我猜对的吗?,所以我的问题是当我尝试获取这个输入值时总是相同的, 帮助程序 idk 似乎存在问题,这是我尝试获取 de 输入值的 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();
            });

所以在这个功能中,当有人打开元素时,应该得到输入,然后当关闭元素时,值是空的,但只适用于 mongo 的第一个值,所以我希望已经很清楚了,你可以帮助我,对不起我的英语我尽力了。

好吧

,我不确定,我了解了一切并得到了你的问题。但我仍然有一些评论,也许是一个解决方案。

首先,如果你使用的是 meteor,为什么不使用 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是!(。会话文档

所以也许这是你的问题,这个函数没有重新运行。所以你第二个事件处理程序,这没关系,因为它取决于反应式数据源:

var valorInput = Session.get("valorInput")

也不会重新运行,因为 valorInput 不会更改多次(第一次(。

因此,您需要在第一个处理程序中放置一个反应式数据源,以便在需要时触发函数。我不确定我是否回答了您的问题,但希望对您有所帮助!