Getting Meteor 0.9.1.1点击事件更新对象



我只是在玩不同的模式,对编程非常陌生,但到目前为止,我的测试应用程序中除了这个之外,其他一切都可以工作。我尝试了很多变体,但运气不佳,但我怀疑我错过了一些非常简单的东西。

基本上,我希望用户单击一个按钮,然后更新当前对象的两个特定属性的值。

在这个例子中,我希望当用户单击"返回"按钮时进行更新(下面显示的其他按钮工作正常)。

以下是有问题的按钮的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文件。基本上,我想设置"lendstatus"one_answers"lender"属性的值。

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: ""}});

我错过了什么?

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

相关内容

  • 没有找到相关文章

最新更新