[英]Backbone.js Binding events
我针对同一问题发现了很多问题(事件未得到约束),我能够理解我的错误并予以纠正。 尽管以下代码无法正常工作。 实际上,我不了解骨干.js中视图的概念。 视图如何与集合绑定?
$(function () { // Whole function executes after dom load
var LeaveAMsg = Backbone.Model.extend({});
var MsgCollection = Backbone.Collection.extend({
model: LeaveAMsg
});
var messages = new MsgCollection();
var AppView = Backbone.View.extend({
el: "body",
events: {"click button#text-input" : "newMsg"} ,
newMsg: function() {
alert('hai');
var inputField = $('input[name=newMessageString]');
messages.create({content: inputField.val()});
inputField.val('');
this.render();
} ,
render: function() {
var content = this.model.get('content');
$('.test-div').html(_.template($('#item-template').html(), {content:this.model.content}));
},
initialize: function () {
}
});
var appview = new AppView();
});
这是我的HTML
<body>
<div class='finaltry'>
<input type='text' name='newMessageString' />
<input type='button' id='text-input' value='Clickme' />
</div>
<div class='test-div'>
</div>
<script type="text/template" id="item-template">
<div>
<font color='gray'> <%= content %> </font>
</div>
</script>
</body>
希望对观点有很好的解释
您需要将el传递给视图
var body1 = document.getElementsByTagName('body');
var appview = new AppView({
el: body1
});
除此以外,您还需要选择器将事件绑定为
events: {"click #text-input" : "newMsg"} ,
我不确定您使用的下划线模板。 但是,当我尝试您的代码时,模板未加载。 我使用mustache.js模板,该模板要简单得多。
当您在视图中指定el时,它将使用该标签名称创建一个el,而不是从DOM中选择标签。 因此,如果您在初始化View时发送el,则可以将事件绑定到传递的el中的任何元素。
而使用#text-input而不是button#text-input更像是一种语法,因为前一个不起作用,而后一个起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.