2013-09-23 38 views
3

我不知道为什么会发生这种情况。这对我来说看起来很不寻常。 通常当我想成为一个按钮执行的操作单击我会用这个骨干点击事件没有触发

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

somefunction: function(){ 
alert("Blah"); 
} 

但不幸的是,这是不工作对我来说。 ??

这里是我的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"); 
    } 
}); 

我的状态已经得到了很多的输入框,之后我的最终提交按钮就这样产生了

<input type="button" id="addDriveBtn" class="btn btn-default btn-large span12" `value="Add Driver" />` 

在这个事件中,我想的点击一个警报弹出。任何想法我在这里做什么错误?我的html不是模板。我的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)); 

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

+0

#addDriveBtn'是你的视图的孩子吗?如果不是,你的观点就不会听它发生的事件。你的渲染上的 – Andrew

+0

尝试“返回这个”(你的视图)而不是“返回模板”; – jrsalunga

+0

为什么你的'render'返回'template' HTML? jsfiddle.net或jsbin.com上的简单演示会很有帮助。 –

回答

4

我与安德鲁同意 - 该事件会得到绑定到您的视图的元素(el),所以按钮必须在你的el内部才能被触发

+0

现在,即使我宣布我的div为我的EL元素..这将如何改变?或我如何打电话.. – seshan