javascript - Backbone : Can't remove a view when call method remove()

标签 javascript jquery backbone.js backbone-views

我尝试删除包含在 map 中渲染的制造商的 View 。当我单击按钮时,事件 click .ver 被激活,但没有任何反应,并且我收到以下错误:Uncaught TypeError: undefined is not a function。我不知道我做错了什么。

我的代码:

ev.views.Home_Eventos = Backbone.View.extend({
    initialize: function(map){
        this.template = _.template(ev.templateLoader.get('home_list_eventos'));
        this.map = map;
        //console.log(this.map);
        this.render(this.map);
    },

    events: {
        'click .ver' : 'teste'  
    },

    teste: function(){
        ev.views.Markers.remove();
    },

    render: function(map){
        var that = this;
        that.map = map;
        var imagens = new ev.models.ImagemCollection();
        imagens.fetch({
            success: function(){
                that.$el.html(that.template({imagens: imagens.models}));
                var marcadores = imagens.models;
                    setTimeout(function() {
                    that.local(that.map);
                    var marcadores = new ev.views.Markers(that.map);
                }, 0);
                return that;
            }
        });
    }

});

ev.views.Markers = Backbone.View.extend({
    initialize: function(map){
        this.map = map;
        this.render(this.map);
    },

    render: function(map){
        var that = this;
        var imagens = new ev.models.ImagemCollection();
        imagens.fetch({
            success: function(){
                var marcadores = imagens.models;
                    setTimeout(function() {
                    _.each(marcadores, function(marcador){
                        var myLatlng = new google.maps.LatLng(marcador.get('latitude'),marcador.get('longitude'));
                        var marker = new google.maps.Marker({
                            position: myLatlng,
                            map: that.map,
                        });

                    });
                }, 0);

                return that;
            }
        });
    }

});

最佳答案

您需要保留对要删除的 View 的引用。例如,您有:

var marcadores = new ev.views.Markers(that.map);

您可以通过执行以下操作来保存 View 上的引用:

that.marcadores = new ev.views.Markers(that.map);

然后在你的事件处理程序中,

teste: function(){
    this.marcadores.remove();
},

这会破坏您创建的 Marker View ,但可能不会清除该 View 管理的 Google map 标记。

关于javascript - Backbone : Can't remove a view when call method remove(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27610869/

相关文章:

javascript - contentEditable、execCommand 和强制新键入的文本加粗

javascript - 测试字符串中的多个单词

javascript - Jquery - 必须向 Jquery 对象添加剩余 [0]

jQuery 悬停不起作用

backbone.js - Backbone 为所有获取设置全局 api url root

javascript - 为 ajax 使用多个方法 token 有什么好处?

javascript - 当表单字段发生更改且未保存时提示用户

javascript - 无法在 ie8 中获取未定义或空引用错误的属性 'refresh'

javascript - 逐步更改页面上的所有图像

javascript - 显示符合特定条件的帖子总数