我试图从一个html字段设置一个var。当我运行meteor时,它不会编译错误,但是如果单击submit按钮,控制台会显示:
调用方法“submitme”时出现异常类型错误:无法调用未定义的方法“preventDefault”
我真的搞不懂。。。
所以我的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()应该只调用服务器端代码;您不能尝试从document函数访问submitme,也不需要在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方法。

08-18 03:09