1

我有一个谷歌地图,用户可以点击(在地图上的任何地方),点击事件打开一个引导模式窗口,包含一个表单。我的问题是,如何/在哪里处理此提交事件以将标记添加到标记集合,将其保存到数据库等。

目前我有一个地图视图,它呈现谷歌地图,并为点击添加一个事件监听器。单击地图打开模态。

App.Views.Map = Backbone.View.extend({
...
initializeMap : function(){}
...
addMapEventlistener : function() {

    google.maps.event.addListener(this.map, 'dblclick', function(event) {

    var coords = event.latLng.toUrlValue();

    var carray = coords.split(",");

    var model = new Backbone.Model({ coords: carray });

    var view = new App.Views.Modal({ model: model });

    var $modalEl = $("#modal");
    $modalEl.html(view.render().el);
    $modalEl.modal();
    }); 
}    


App.Views.App = Backbone.View.extend({

        initialize: function() {

var addMarkerView = new App.Views.AddMarker({ collection: App.markers });

        }

});

// add marker view

    App.Views.AddMarker = Backbone.View.extend({

        el: '#addForm',

        initialize: function() {

            $('<input>', {
                type: 'submit',
                value: 'Submit',
                class: 'smt'
            }).appendTo(this.$el);

            console.log('AddMarker init run'); // this echoed out

        },

        events: {
            'submit' : 'addMarker'      
        },

        addMarker: function(e) {

            e.preventDefault();

            alert('hello');

        },

    });

我的猜测是在地图上的点击事件之后呈现的表单,所以我必须在模式打开后以某种方式设置主干事件监听,并在集合视图中处理表单提交,对吗?

4

2 回答 2

0

您可能希望使用事件对象来绑定您的侦听器。
关于何时(重新)绑定您的事件。实例化视图时,事件对象中指定的侦听器将绑定到视图元素。这意味着,如果您的事件以子元素为目标,那么此时该子元素是否存在并不重要。现在,在不使用 setElement 方法更改视图元素的特殊情况下,您必须重新绑定侦听器。

例子:

<div id="#mydiv"></div>

并且您想在此 div 内的按钮上绑定一个事件(稍后您将创建一些。)。好吧,这是一个例子

于 2013-03-29T10:26:59.313 回答
0

好的,解决了。我的错。我将事件添加到错误的视图中,我必须将其添加到 App.Views.Modal 视图中(当然事件发生在模态中)。谢谢你的时间!

于 2013-03-29T11:54:30.710 回答