【问题标题】:"Data Undefined" in MeteorMeteor 中的“数据未定义”
【发布时间】:2015-03-20 09:34:58
【问题描述】:

点击提交时,我不断返回“无法读取未定义的属性‘数据’”错误:

Template.postItem.rendered = function() { 
  $(document).on('click', '#mysubmit', function(e, template) {
    e.preventDefault();  
    var inputval = $("#myinput").val(); 
    var time = {
      begins: inputval,
      postId: template.data._id
   };

    time._id = Times.insert(time);
 });
}

Meteor 不应该从模板接收“template.data._id”吗?

【问题讨论】:

    标签: jquery meteor


    【解决方案1】:

    Meteor 在模板上提供事件映射,您可以使用这些映射传入“事件”和“模板”以访问数据上下文。除非您正在做一些不寻常的事情,否则您不需要使用 jquery 响应来自 render() 函数的点击事件。

    您可以像这样重写您的事件以访问“模板”数据:

    Template.postItem.events({
      "click #myinput": function(event, template){
        event.preventDefault();
        var postId = template.data._id; // template.data is now accessible
        // etc.
      }
    });
    

    更新:

    如果你还需要通过rendered()函数访问你的模板数据,可以通过Template.instance().data访问:

    Template.postItem.rendered = function(){
      var data = Template.instance().data;
      $(document).on('click', '#mysubmit', function(e) {
        e.preventDefault();  
        var inputval = $("#myinput").val(); 
        var time = {
          begins: inputval,
          postId: data._id
       };
       time._id = Times.insert(time);
    }
    

    【讨论】:

    • 我想我正在做一些与众不同的事情。表单位于引导弹出框内,需要 jQuery on() 绑定事件。你知道在 Template.name.events 中使用 on() 的方法吗?
    • 没问题,我用一个例子更新了我的答案(我没有检查过,但应该指出你正确的方向)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2017-10-24
    • 1970-01-01
    • 2018-11-05
    • 2015-11-06
    • 2016-07-21
    • 2017-04-20
    相关资源
    最近更新 更多