获取Meteor 0.9.1.1单击事件以更新对象

时间:2014-09-10 04:10:37

标签: javascript events meteor click updates

我只是在玩不同的模式并且对编程很新,但是到目前为止我已经在测试应用程序中完成了所有工作。我尝试了一堆没有运气的变种,但我怀疑我错过了一些非常简单的东西。

基本上我想要发生的是用户点击一个按钮然后更新当前对象的两个特定属性的值。

在此示例中,我希望在用户点击"返回"按钮(下面显示的其他按钮工作正常)。

这里是相关按钮的HTML模板:

<template name="bookDetails">
<div class="post">
    <div class="post-content">
            <h3>{{title}}</h3><span> {{author}}</span>

    {{#if onLoan}}
    <i class="fa fa-star"></i>
    On loan to: {{lender}}{{/if}}
    </div>


        {{#if ownBook}}
            <a href="{{pathFor 'bookEdit'}}" class="discuss btn">Edit</a>
            <a href="{{pathFor 'bookLoan'}}" class="discuss btn">Lend</a>
            <div class="control-group">
                <div class="controls">
                    <a class="discuss btn return" href="">Return </a>
                </div>
            </div>
        {{/if}}
    </div>
</template>

这里是包含我的Template事件的.js文件。基本上我想设置&#34; lendstatus&#34;的值。和&#34;贷方&#34;属性。

Template.bookDetails.helpers({
  ownBook: function() {
    return this.userId == Meteor.userId();
  },
  onLoan: function() {
    return this.lendstatus == 'true';
  }
});

Template.bookLoan.events({
  'click .return': function(e) {
     e.preventDefault();
     var currentBookId = this._id;
     var bookProperties = {
       lendstatus: "false",
       lender: "",
    }

   Books.update(currentBookId, {$set: bookProperties}, function(error) {
      if (error) {
      // display the error to the user
      throwError(error.reason);
      } else {
      Router.go('bookPage', {_id: currentBookId});
      }
    });
   },
 });

如果我在浏览器控制台中输入ID为ZLDvXZ9esfp8yEmJu的对象的页面,我会在屏幕上显示正确的行为并且数据库更新,所以我知道我关闭了:

Books.update({ _id: "ZLDvXZ9esfp8yEmJu"}, {$set: {lendstatus: "false", lender: ""}});

我错过了什么?

1 个答案:

答案 0 :(得分:1)

好的 - 所以我的问题是我在错误的模板中定义了事件处理程序。我在bookLoan模板中定义了它而不是bookDetails模板。谢谢@saimeunt指出这个!