【问题标题】:meteor template events functions errors流星模板事件函数错误
【发布时间】:2014-02-23 01:43:29
【问题描述】:

我有一个html 这个模板:

<template name="entryfield">
    <input type="text" id="name" placeholder="Name" /> <input type="text" id="message" placeholder="Your Message" /><br>
    <input type="button" class="plusbutt" value="+"/><input type="button" class="minusbutt" value="-"/>
</template>

我想声明 2 个按钮事件:

Template.entryfield.events = {
'click .plusbutt': function() {
      // Submit the form
      var name = document.getElementById('name');
      var mood = document.getElementById('mood');
      var message = document.getElementById('message');

      if(name.value != '' && message.value != ''){

        Messages.insert({
          name: name.value,
          mood: '+',
          message: message.value,
          time: Date.now()
        });

        name.value = '';
        message.value = '';
    }
  }
}

'click .minusbutt': function() {
      // Submit the form
      var name = document.getElementById('name');
      var mood = document.getElementById('mood');
      var message = document.getElementById('message');

      if(name.value != '' && message.value != ''){

        Messages.insert({
          name: name.value,
          mood: '-',
          message: message.value,
          time: Date.now()
        });

        name.value = '';
        message.value = '';
    }
  }

但我有错误:

chat.js:58:19: Unexpected token :

第 58 行是第二个事件声明的开始。但是当我完全取消第二个事件时,一切正常。我的问题是人们如何在同一个模板事件中声明多个函数?我到处都看到它,但我就是无法让它发挥作用。谢谢!

在哪里可以找到有关模板事件的参考资料?学习 Meteor 的问题是,它们的功能来自各地,有的来自 MongoDB,有的来自 Handlebar,有的来自 JavaScript,初学者比较难上手。

【问题讨论】:

    标签: javascript mongodb meteor


    【解决方案1】:

    你的事件声明语法错误,小心!

    一定要查看 Meteor 文档,一切都很详细:http://docs.meteor.com/#template_events

    应该是这样的:

    Template.entryfield.events({
        "click .plusbutt":function(){
            /* ... */
        },
        "click .minusbutt":function(){
            /* ... */
        }
    });
    

    Template.myTemplate.events 是一个以对象为参数的函数。 对象的每个成员都应该是一个键/值对,键是事件声明,值是对应的处理程序。

    【讨论】:

    • @sooon 你不这样做,那只会用一个对象覆盖events 函数,你将无法再次调用它来添加事件。另请注意,您可以多次调用events 函数以继续添加更多事件处理程序。
    • 在反复阅读和思考之后,我想我现在明白了。我做错的是我定义了template helper function,而不是events 本身。现在我明白了。
    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多