【问题标题】:Backbone.View event only fires onceBackbone.View 事件只触发一次
【发布时间】:2013-03-11 03:20:13
【问题描述】:

jumpToWave 事件只触发一次,我不明白为什么。

这是我的看法:

var WaveModalView = Backbone.View.extend({

template:_.template($('#tpl-wave-modal').html()),

events: {
    'hidden': 'remove',
    'click .jumpToWaveBtn':'jumpToWave'
},
    jumpToWave:function(e){
        e.preventDefault();
        console.log("JMP")
        var marker = this.model.collection.markers[this.model.id];
        map.panTo(marker.getPosition());
        bounceMarker(marker,1750);
    },
render:function () {
    var model = this.model;
    var that  = this;
    $(this.el).html(this.template(model.toJSON()));

    if(model.get('waveReviews').length > 0){
        var reviewList = new WaveReviewList({model: model});
        $('#waveReviews' + model.id).html(reviewList.render().el);
    }

    this.$("#waveSync" + model.id).click(function(e){
        e.preventDefault();
        if(window.me){
            requestSyncWave(model.id,function(data){
               window.me.fetch();
            });
        }
    });

    this.$("#waveEdit" + model.id).click(function(e){
        e.preventDefault();
        window.waveUnderEdit = model;
        $(that.el).children(":first").modal('hide');
        openWaveEditModal(model);

    });

    return this;
}

});

这是模板中的相关按钮:

<button class="btn btn-info jumpToWaveBtn" data-dismiss="modal" aria-hidden="true">Auf Karte
            anzeigen</button>

单击按钮时,我有多个模式。每个模式只触发一次事件,之后不再记录“JMP”。

【问题讨论】:

    标签: javascript backbone.js backbone-views backbone-events


    【解决方案1】:

    我没有看到您的代码在 WaveModalView 上调用 render,但我怀疑问题是您确实从其他地方调用了 render(),而后者又调用了 $(this.el).html(...),它取代了视图元素的内容,并且新插入的内容没有绑定到其元素的事件。

    如果这确实是问题,您可以通过在 render() 函数的末尾添加 this.delegateEvents() 来解决它。

    例如,检查这个问题和答案:Why are events not firing after the second render in Backbone.js?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多