骨干点击事件未触发

ses*_*han 5 javascript backbone.js backbone-events backbone-views

我不确定为什么会这样。这对我来说看起来很不寻常。通常,当我想要在按钮上执行操作时,我会使用它

events:{
'click #button_name':'somefunction'
},

somefunction: function(){ 
alert("Blah");
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这对我不起作用。??

这是我的 js 文件:

var AddDriverView = Backbone.View.extend({

    initialize : function() {
        this.render();
        },
    events: {
        'click #addDriveBtn' :'loadDriver'

    },
    render : function() {
        console.log("render");
        var template = _.template(addDriverTemplate, {});
        return template;

        // this.$el.html( template ,{});
    },
    loadDriver : function() {
        alert("Add Driver Data");
    }
});
Run Code Online (Sandbox Code Playgroud)

我的表单有很多输入框,之后我的最终提交按钮是这样的

    <input type="button" id="addDriveBtn" class="btn btn-default btn-large span12" `value="Add Driver" />`
Run Code Online (Sandbox Code Playgroud)

单击此事件时,我希望弹出警报。知道我在这里犯了什么错误吗??

注意:我的 html 不是模板。它是一个将被渲染到主视图中的小视图,其名称类似于“views.addDriver.html”。

在 js 文件中,视图被渲染并且 console.log 工作。

编辑 我将 el: 更改为 div 而不是 FORM 并且它完美地工作。

更新的问题 我想将表单中的所有数据移动到一个集合中,任何帮助如何将表单中的数据放入一个集合对象中。

这是我尝试过的:

var formData = {};
 $("#driverdata").children("input").each(function(i, el){
 formData[el.id] = $(el).val();
 });
 console.log(JSON.stringify(formData));
Run Code Online (Sandbox Code Playgroud)

这在我的 Firefox 和 Chrome 控制台中返回了一个“{}”......

小智 7

我同意安德鲁 - 该事件将绑定到您的视图元素(el),因此该按钮必须在您的 el 内才能被触发