在用户点击Meteor时将事件添加到数据库

时间:2015-01-07 02:48:31

标签: hyperlink meteor

当用户点击某个链接时,我正在尝试更新Meteor中的集合。该链接将打开一个新选项卡,该选项卡位于外部站点上。但是,我想将此点击存储在我的数据库中。

我尝试过使用e.preventDefault(),但后来无法在新标签页中打开链接。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您可以使用click事件并在插入数据库后使用window.location。 所以,它看起来像这样:

Template.name.events({
  'click a' : function(e) {
    e.preventDefault();
    // Insert data into database
    Table.insert({
      // data here
    });
    // Open new tab
    window.open(url, '_blank');
  }
});

答案 1 :(得分:1)

您不应该使用javascript打开新标签,因为这会激活弹出窗口拦截器。最好的解决方案是正常连接,并跟踪侧面的链接:

HTML:

<template name="link">
    <a href="http://google.com" target="_blank" id="the_link">CLick</a>
</template>

JS:

Template.link.events({
    'click a#the_link': function(e,tmpl) {
        MyCollection.update({_id: "the_link_id"} , {$inc { "clicks":1 } });
    }
});

答案 2 :(得分:0)

您可以在服务器端进行安全插入。可以在响应成功时打开窗口。

在客户端

Template.name.events{(
 "click .clickevent":function(e){

   e.preventDefault();
       Meteor.call("Methodname", datatoinsert,function(err){
       if(!err)
        window.open(url, '_blank');                
      })   
       }    

  )};

在服务器

Meteor.methods({
Methodname:function(datatoinsert){

  Tablename.insert({
  //insert data here
   })    
  }
 }); 

通过这种方式,您可以添加事件,并且在成功插入数据后,您可以打开一个窗口。

我希望它可以帮到你。