Событие клика backbone.js не регистрируется - PullRequest
0 голосов
/ 16 января 2012

У меня были проблемы с получением событий кликов, работающих через мою функцию item_match_result.

Я попытался поместить item_match_result в представление ItemList, видя, что это родитель, но также не смог заставить это работать, и он действительно принадлежит представлению ItemMatch.

Есть предложения ??

MyApp.Views.ItemList = Backbone.View.extend({
    tagName: 'li',
    className:'item_list',
    ...

    render_item_match: function(model){
            var item_match = new MyApp.Views.ItemMatch({model:model});
        $(this.el).append(item_match.el);
        }


});

MyApp.Views.ItemMatch = Backbone.View.extend({
    tagName: 'a',
    className: 'item_match_result',

    initialize: function(){
        _.bindAll(this,"item_match_result");
        this.render();
    },


    events : {
        "click a.item_result": "item_match_result"
    },

    render : function(){
        this.el = HandlebarsTemplates['items/itemSearchResultItem'](this.model.attributes);

    },

    item_match_result: function(){
     console.log(this);
    }
});


})

1 Ответ

3 голосов
/ 16 января 2012

Вы не можете заменить this.el, и он все еще работает. Вы просто убили элемент, с которым связано событие. Если вы сделаете это, вам нужно будет запустить this.delegateEvents() еще раз, чтобы связать его.

MyApp.Views.ItemMatch = Backbone.View.extend({
    tagName: 'a',
    className: 'item_match_result',

    initialize: function(){
        _.bindAll(this,"item_match_result");
        this.render();
    },


    events : {
        "click a.item_result": "item_match_result"
    },

    render : function(){
        this.el = HandlebarsTemplates['items/itemSearchResultItem'](this.model.attributes);

        this.delegateEvents()

    },

    item_match_result: function(){
     console.log(this);
    }
});
...