Javascript 我如何结合谷歌地图和基于主干视图的信息箱

Javascript 我如何结合谷歌地图和基于主干视图的信息箱,javascript,google-maps,google-maps-api-3,backbone.js,google-maps-markers,Javascript,Google Maps,Google Maps Api 3,Backbone.js,Google Maps Markers,我想有一个谷歌地图,当点击一个标记,会打开一个信息框(或自定义覆盖),这实际上是(或基于)主干视图。主干视图应该在第一次打开时通过放置一个ajax调用来获取其内容,但是如果关闭并重新打开,则不应该再调用服务器(应该显示第一次打开的结果) 我根本不知道如何实现这一点,因为信息框的内容是一个dom元素(我只想在第一次打开时更改/填充)。(顺便说一句,我主要是一个后端开发人员,前端对我来说是非常新的) 我想到的是做类似的事情,但我不确定这是正确的方式: var view = new MyOverlay

我想有一个谷歌地图,当点击一个标记,会打开一个信息框(或自定义覆盖),这实际上是(或基于)主干视图。主干视图应该在第一次打开时通过放置一个ajax调用来获取其内容,但是如果关闭并重新打开,则不应该再调用服务器(应该显示第一次打开的结果)

我根本不知道如何实现这一点,因为信息框的内容是一个dom元素(我只想在第一次打开时更改/填充)。(顺便说一句,我主要是一个后端开发人员,前端对我来说是非常新的)

我想到的是做类似的事情,但我不确定这是正确的方式:

var view = new MyOverlayBackboneView({ model: myModel});
var infoBoxOptions = {
   content: view.el
};



var infoBox = new InfoBox(infoBoxOptions);

var marker = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(some_lat, some_lng),
    ...
    other marker related parameters
});

marker.infoBox = infoBox;

google.maps.event.addListener(marker, 'click', function() {
    this.infoBox.open(map, this);
}               
这里我缺少的是第一次打开信息框时主干视图的render()部分,对于在何处执行该操作,我没有多少线索

不用说,我希望启动infobox的代码部分尽可能干净,并将任何样式和ajax调用留给主干视图

如果有人能为我指出正确的方向(教程/示例代码),我将不胜感激。
提前感谢您提供的任何帮助。

您的视图可能是这样的:

MyOverlayBackboneView = Backbone.View.extend({
  render: function() {
    [rendering the contents of your view here]
    return this;
  }
};
然后在创建信息框时:

var infoBoxOptions = {
  content: view.render().el
};

这将使您的视图只呈现一次,然后将呈现的内容放入信息框。

但是视图将从服务器上从何处获取its集合?如果我把它放在render()中,这意味着所有信息框都将在创建时从服务器获取,而不是在打开时。这意味着我正在从服务器获取可能永远看不到的数据。我希望ajax调用只在infoBox打开(主干视图可见)时进行,这为我解决了这个问题。泰@ken您可以通过套接字发送实际数据。您只需为客户端发送模板。。我不知道是否有办法通过socket/ajax发送模板,但您可以通过这种方式发送内容。。我不知道ajax是什么,但是socket.io相当不错。