我正在使用传单和流星构建项目,用户可以在其中输入文本,并在单击地图时将文本显示在弹出窗口中。我最初可以显示文本,但刷新时文本显示会丢失。
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}}
,这似乎不适用于传单弹出窗口。
答案 0 :(得分:0)
txt
是与latLng
&完全不同的文件。这两者在数据库中没有任何关系。创建新标记时,需要包含txt
。除了少数例外,您应该专注于使Markers集合中的每个文档都遵循相同的模式。