点击后触发骨干事件或按回车键

我是骨干的新手,我正在寻找一种方法,当我按下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" } 

    您可以在AppViewevents哈希中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