传单弹出窗口中的数据库值的错误

时间:2015-07-22 15:09:27

标签: javascript meteor leaflet

我正在使用传单和流星构建项目,用户可以在其中输入文本,并在单击地图时将文本显示在弹出窗口中。我最初可以显示文本,但刷新时文本显示会丢失。

var Markers = new Meteor.Collection('markers');
Meteor.subscribe('markers');

Template.map.rendered = function() {

map = L.map('map', {doubleClickZoom: false}).locate({setView: true, maxZoom: 16});

 //adds markers on dblclick
map.on('dblclick', function(event) {
currentlatlng = event.latlng;
Markers.insert({latlng: event.latlng});

});

var query = Markers.find();
query.observe({

added: function (document) {
  var marker = L.marker(document.latlng).addTo(map)
    .on('dblclick', function(event) {
      map.removeLayer(marker);
      Markers.remove({_id: document._id});
    });

    //display user input in popup
    var value;
    value = $("#txt_name").val();
    Markers.insert({txt: value});    
    marker.bindPopup(Markers.findOne({txt: value}).txt).openPopup();    

}
);//end observe
}

我知道因为在刷新时,value(这只是html中的文本字段)是空白的,它不会返回任何内容。我怎么能让它始终显示相应的数据库字段?到目前为止,我完成它的唯一方法是在html中使用{{handlebars}},这似乎不适用于传单弹出窗口。

1 个答案:

答案 0 :(得分:0)

txt是与latLng&完全不同的文件。这两者在数据库中没有任何关系。创建新标记时,需要包含txt。除了少数例外,您应该专注于使Markers集合中的每个文档都遵循相同的模式。