从 Meteor javascript Html 获取 Var 时出错

Error Getting Var from Html form Meteor javascript

我正在尝试从 html 字段设置一个变量。当我 运行 meteor 时,它不会编译出现任何错误,但是如果单击提交按钮,控制台会显示:

Exception while invoking method 'submitme' TypeError: Cannot call method 'preventDefault' of undefined

我真的想不通...

所以我的 html 部分是:

<template name="status">
  <form id="status">
       <input id="status" type="text" name="status"/>
       <input type="submit" id="submit"/>
     </form>

</template>

事件的 javascript 部分:

   submitme: function(event){


           event.preventDefault();

           var statusvar = document.getElementById("status").value;




                 alert("Submitted!");
                 Meteor.users.update({
                   _id: this.userId
                 }, {

                  $set:
                      {

                        'status': statusvar
                      }
                   });





       },

最后

Template.status.events({'submit' : function(event) {
    Meteor.call('submitme');
    event.preventDefault(); //prevent page refresh
}

编辑: 已修复!

下面的帮手发帖:

Template.status.events({
    'submit' : function(event) {
        event.preventDefault(); //prevent page refresh    
        var statusvar = document.getElementById("status").value;
        alert("Submitted!");
        Meteor.call('submitme', statusvar);
    }
});

这没有用。 我将其替换为:

Template.status.events({

    'submit' : function(event) {
        event.preventDefault(); //prevent page refresh



        var statusvar = event.target.status.value;


        alert("Submitted!");
        Meteor.call('submitme', statusvar);
    }
});

现在有效了..! :)

这里出现了一些问题。 Meteor.call() 应该只调用服务器端代码;您不能尝试从 submitme 函数访问 document,也不需要 submitme 中的 event.preventDefault() (并且您也没有传递任何内容,所以无法访问 event)。像这样修改您的代码:

//THIS MUST BE ON THE SERVER SIDE
submitme: function(statusvar) {
    Meteor.users.update({
        _id: this.userId
    }, {
        $set: {
            'status': statusvar
        }
    });
},

//CLIENT SIDE
Template.status.events({
    'submit' : function(event) {
        event.preventDefault(); //prevent page refresh    
        var statusvar = document.getElementById("status").value;
        alert("Submitted!");
        Meteor.call('submitme', statusvar);
    }
});

您的事件函数将从 HTML 中提取值,然后将该变量传递给名为 submitme 的服务器端 Meteor 方法。