Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递集合ID以在Meteor中生成表单_Javascript_Meteor_Meteorite_Meteor Blaze_Meteor Helper - Fatal编程技术网

Javascript 传递集合ID以在Meteor中生成表单

Javascript 传递集合ID以在Meteor中生成表单,javascript,meteor,meteorite,meteor-blaze,meteor-helper,Javascript,Meteor,Meteorite,Meteor Blaze,Meteor Helper,我有一个“国家”集合,其中显示了国家及其信息的列表。book选项将用户引导到“活动”表单,该表单具有下拉字段,如,From。如何传递“Country”ID,以便“Activity”中的表单字段属于用户单击其Book按钮的“Country”。我认为我应该使用反应式var来存储国家id,然后执行相应的操作来更改表单字段。我对这一点还比较陌生,如果能对这一方法有所了解,我将不胜感激 活动集合的提交代码为: Template.activitySubmit.onRendered(function

我有一个“国家”集合,其中显示了国家及其信息的列表。book选项将用户引导到“活动”表单,该表单具有下拉字段,如,From。如何传递“Country”ID,以便“Activity”中的表单字段属于用户单击其Book按钮的“Country”。我认为我应该使用反应式var来存储国家id,然后执行相应的操作来更改表单字段。我对这一点还比较陌生,如果能对这一方法有所了解,我将不胜感激

活动集合的提交代码为:

    Template.activitySubmit.onRendered(function () {
    if (Session.get("submit-bypass") === true) {
        Session.set("submit-bypass", false);
        window.history.back();
    }

    $("#activity-goal").material_select();
});

Template.activitySubmit.events({
    "submit form": function (e) {
        e.preventDefault();

        var title = $(e.target).find("#activity-title").val()
        if (title.length === 0) {
            throwError("You must have a title.");
            $("activity-title").focus();
            return;
        }

        var activty = {
            title: title,
            goal: parseInt($(e.target).find("#activity-goal").val())
        };

        Meteor.call("activityInsert", activty, function (error, result) {
            if (error) {
                throwError(error.reason);
                return;
            }

            Session.set("submit-bypass", true);
            Router.go("activityPage", { _id: result._id });
        });
    }
});

这就是您应该如何使用反应式var包

  • 在终端
    meteor Add reactive var
  • 打开模板的JS文件,如
    activitySubmit.JS
  • 像这样声明被动var
    
    Template.activitySubmit.onRendered(函数(){
    this.selectedCountry=new ReactiveVar(空);
    });
    
  • 然后根据需要更新无功var并使用它
  • `

  • 如果希望跨多个文件(全局)传递数据,只需使用会话即可<代码>会话.set('myId',id)和
    会话.get('myId')

  • 您可以使用反应式var在同一模板中存储一些数据@alexndm嘿,我也在考虑同样的问题,但我不太清楚具体的实现。我正期待着一个新的开始!再次感谢你,伙计,但我计划的方式是在点击“book”按钮时存储国家的ID,然后在Acitivity.js中使用ID来更改值。我如何使用反应式变量来捕获列表中对象的ID?如果它在多个文件中使用,也许你应该使用会话?我要做的是对我来说更简单的事情,因为我对meteor还很陌生。一旦我拿到身份证,我就可以在JS中完成剩下的工作,但是流星部分把我搞砸了。这就是列表页面如何处理使用mongodb集合生成的每个项。我需要一种方法来区分用户点击了哪个“book”按钮。谢谢你花时间,很抱歉我自己也试过了,但是我无法实现。最简单的方法是使用会话。单击事件(或任何事件)m只需执行
    会话。设置('myId',id)
    ,其中id是您希望存储的值,然后使用
    会话在应用程序中的任何位置检索它。获取('myId')
    谢谢Alex,我欠你一个:)!我现在就试试这个。
    Template.activitySubmit.events({
          'change #country': function(e){
             var country = $(e.target).val()
             var instance = Template.instance();
             instance.selectedCountry.set(country);
          },
    
    
      'submit form': function (e) {
         ....
          var instance = Template.instance();
          var country = instance.selectedCountry.get(country);
         ....
      }
    
    });`