MeteorJS在点击事件中获取MongoDB ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MeteorJS在点击事件中获取MongoDB ID相关的知识,希望对你有一定的参考价值。

我的MeteorJS应用程序中有以下mongo集合:

//Server side, load all the images
Images = new Mongo.Collection('images');
Meteor.startup(() => {
  if(Images.find().count() == 0){
    for(var i = 1; i < 23; i++){
      Images.insert({
        src:"img_"+i+".jpg",
        alt:"image "+i
      });
    }
  }
});

我把它传递给模板,这是有效的。但是,我想要检索图像的MongoDB id(id是MongoDB中的主键/唯一ID)。我使用以下代码执行此操作:

//Client side, get the collection and load it to the template
Images =  new Mongo.Collection('images');

Template.images.helpers({images:Images.find()});

Template.images.events({
  'click .js-del-image': (event) => {
    var imageId = event._id;
    console.log(imageId);
  }
});

这给了我undefined。我究竟做错了什么?我认为this._id应该给我MongoDB ID。

为了记录,这是我的模板,_id属性被填写:

<template name="images">
        <div class="row">
      {{#each images}}
      <div class="col-xs-12 col-md-3" id="{{_id}}">
        <div class="thumbnail">
            <img class="js-image img-responsive thumbnail-img" src="{{src}}"
            alt="{{alt}}" />

            <div class="caption">
                <p>{{alt}}</p>
               <button class="js-del-image btn btn-warning">delete</button>
            </div>
         </div>
        </div> <!-- / col -->
      {{/each}}
    </div> <!-- / row -->
</template>
答案

问题在于声明一个功能:

  • (event) => { ... }似乎有_idundefined
  • function(event) {...}似乎有正确的背景。

有关this answer(event) => {...}声明的更多信息,请参阅function(){...}

以上是关于MeteorJS在点击事件中获取MongoDB ID的主要内容,如果未能解决你的问题,请参考以下文章

MeteorJS:在弹出窗口中不会触发模板事件

学习 MeteorJS 试图制作我自己的转换脚本...卡在事件处理上

Meteor、MongoDB通过订阅获取部分数组

如何使用 Meteorjs 使用 URL 参数

Meteor js 和 fullcalendar

如何在 innerHTML 中获取点击事件?