点击后触发骨干事件或按回车键
我是骨干的新手,我正在寻找一种方法,当我按下Enter键并单击时触发我的按钮。 目前showPrompt仅在单击时执行。 什么是最干净的DRYest方式,让它在按Enter键时执行,最好只用于输入字段。
(function () { var Friend = Backbone.Model.extend({ name: null }); var Friends = Backbone.Collection.extend({ initialize: function (models, options) { this.bind("add", options.view.addFriendLi); } }); var AppView = Backbone.View.extend({ el: $("body"), initialize: function() { this.friends = new Friends(null, {view: this}); }, events: { "click #add-friend": "showPrompt", }, showPrompt: function () { var friend_name = $("#friend-name").val() var friend_model = new Friend({ name:friend_name }); this.friends.add( friend_model ); }, addFriendLi: function (model) { $("#friends-list").append("" + model.get('name') + " "); } }); var appView = new AppView; }());
另外,我在哪里可以阅读有关此类事件绑定的更多信息? 骨干事件与JS或jQuery事件的定义有何不同?
假设您正在使用jQuery
进行DOM manipulation
,您可以创建自己的“小”插件来触发输入中的Enter事件。 把它放在你的plugins.js
或你拥有的任何设置脚本文件中:
$('input').keyup(function(e){ if(e.keyCode == 13){ $(this).trigger('enter'); } });
既然您已经创建了这个“输入”插件,您可以通过这种方式收听事件:
events: { "click #add-friend": "showPrompt", "enter #friend-name": "showPrompt" }
您可以在AppView
的events
哈希中AppView
添加一个event
。
events: { "click #add-friend": "showPrompt", "keyup #input-field-id" : "keyPressEventHandler" }
其中#input-field-id
是您要添加事件的那个。
然后在AppView
添加eventHandler
。
keyPressEventHandler : function(event){ if(event.keyCode == 13){ this.$("#add-friend").click(); } }
注意:此代码未经过测试,但您可以考虑以这种方式进行测试。
看看这个 ,了解Backbone
如何处理View
events
。