2015-01-07 2 views
0

Я пытаюсь обновить коллекцию в Meteor, когда пользователь нажимает на определенную ссылку. Ссылка открывает новую вкладку, которая находится на внешнем сайте. Однако я хочу сохранить этот клик в своей базе данных.Добавить событие в базу данных пользователя клик в Meteor

Я попытался использовать e.preventDefault(), но тогда я не могу получить ссылку для открытия на новой вкладке. Какие-либо предложения?

ответ

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'); 
    } 
}); 
+0

это работает, но Window.open приводит блокировщик всплывающих окон для хрома. любой способ обойти это? –

+0

, и он также не работает в Safari. Я прочитал еще один вопрос о том, что window.open плохо работает в кросс-браузере. Есть ли способ сделать ввод данных после того, как пользователь покидает страницу, как своего рода одновременное фоновое задание. –

0

Вы можете сделать вставку в стороне сервера, который является безопасным. Окно можно открыть при успешном ответе.

В Client

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

Таким образом, вы можете добавить событие и успешных данных вставки вы можете открыть окно.

Надеюсь, это вам поможет.

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 } }); 
    } 
}); 
Смежные вопросы