Магистральное событие не запускается с помощью submit


У меня есть следующий основной вид:

var EditBook = Backbone.View.extend({

    el: '.page',

    render: function (id) {

        var that = this,

            book = new Book({
                id: id
            });

        book.fetch({

            success: function (res) {

                var template = _.template(editBookTpl, {
                    bookInfo: res
                });

                that.$el.html(template);
            },

            error: function () {

                console.log('Error! Could not retrieve the book.');
            }

        });
    },

    events: {

        // This event doesn't work...
        'submit .editBookButton': 'editBook'
    },

    // I cannot seem to be able to bind the submit event to the .editBookButton

    editBook: function (e) {

        e.preventDefault();

        console.log('clicked');
    }
});

Что я делаю, так это загружаю шаблон с подчеркиванием.js

Внутри шаблона есть форма с кнопкой submit, которая имеет класс .editBookButton

Я хочу использовать события Backbone, но это не работает.

Есть идеи, почему?

Есть ли способ обеспечить триггеры событий только для элементов с этим классом только из этого представления?

Я нашел похожий вопрос, но ответ был неполным.
2 2

2 ответа:

Вместо использования селектора кнопок используйте селектор форм.

Предположим, что html-код:

<form class="editBook">...<button type="submit">Submit</button></form>

Тогда код будет:

events: {
    'submit .editBook': 'editBook' 
}

Кнопки не имеют события submit, только формы имеют.

Таким образом, вы должны попытаться поймать это событие submit на вашем элементе form.