提交时未触发 Backbone.js 事件

kgsdhlau  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(184)

我有以下 Backbone.js 视图:

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');
    }
});

我所做的就是加载一个带有underscore.js的模板
模板中有一个表单,其中包含一个提交按钮,该按钮的类为.editBookButton
我想使用Backbone的事件,但它不起作用。
知道为什么吗?
是否有办法确保事件只触发这个视图中具有这个类的元素?
我也发现了类似的问题,但答案并不完整。

fhg3lkii

fhg3lkii1#

按钮没有submit事件,只有表单有。
因此,您应该尝试在form元素上捕获submit事件。

qf9go6mv

qf9go6mv2#

不要使用按钮选择器,而应使用窗体选择器。
假设html代码为:

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

则代码将为:

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

相关问题