簡體   English   中英

backbone.js - 僅觸發一次的事件

[英]backbone.js - events only firing once

我的活動沒有像我希望的那樣發揮作用,我想我知道為什么。 單擊perpage跨度時,所有內容都會正確呈現。 但我意識到 - 也許這些事件沒有重新附加到新標記上? 難道這就是它只運作一次的原因嗎? (如果我單擊其中包含數字10的跨度,則會顯示10個項目。但之后,我點擊的任何內容都不會改變任何內容)

有什么更好的方法來組織這個? 模板是否應該包含分頁部分? 如何在再次渲染后將骨干事件附加到標記?

var ListView = Backbone.View.extend({

    initialize: function() {
        var self = this;
        this.collection.bind("refresh", function(){self.render();});
        this.render();
    },

    events: {
        'click ul#perpage span': 'setperpage'
    },

    setperpage: function(event) {
        this.collection.perpageurl = '/perpage/' + $(event.target).text();
        this.collection.fetch();
        this.collection.refresh();
    },

    render: function() {

    template = _.template('\
    <table>\
    <% _(collection).each(function(model){%>\
    <tr><td><%=model.id%></td><td><%=model.name%></td><td><%=model.email%></td></tr>\
    <%}); %>\
    </table>\
    <ul id="perpage">\
    <li><span>5</span></li>\
    <li><span>10</span></li>\
    </ul>\
    ');

        var context = {collection: this.collection.toJSON()};
        $(this.el).html(template(context));
        $('#app').html(this.el);
        return this;
    }
});

嘗試:

render: function()
{
    // …

    this.delegateEvents();
    return this;
}

對於JavaScript中的調試事件,請使用Visual Event 它會告訴您哪些元素附加了事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM