javascript - 单击或按 Enter 时触发 Backbone 事件

标签 javascript jquery backbone.js backbone-events

我是 backbone 的新手,我正在寻找一种在我按下 Enter 以及单击时触发我的按钮的方法。目前 showPrompt 仅在单击时执行。让它在按下 Enter 时执行的最干净的 DRYest 方法是什么,最好只针对该输入字段。

(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("<li>" + model.get('name') + "</li>");
    }
  });

  var appView = new AppView; 

}());

还有,我在哪里可以阅读更多关于这种事件绑定(bind)的信息?主干事件在定义方式上是否与 JS 或 jQuery 事件不同?

最佳答案

假设您正在使用 jQuery 进行 DOM 操作,您可以创建自己的“微型”插件,在输入。将其放入您的 plugins.js 或您拥有的任何设置脚本文件中:

$('input').keyup(function(e){
  if(e.keyCode == 13){
    $(this).trigger('enter');
  }
});

现在您已经创建了这个“enter”插件,您可以通过这种方式收听 enter 事件:

events: {
  "click #add-friend": "showPrompt",
  "enter #friend-name": "showPrompt"
}

关于javascript - 单击或按 Enter 时触发 Backbone 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366768/

相关文章:

php - 将纬度/经度转换为 X/Y 坐标

javascript - Firebase 与 JavaScript

javascript - JS 脚本在 HTML 中的位置

javascript - jquery,如何在确定元素没有同时动画后对其进行动画处理

javascript - JQuery 对话框在升级到 Bootstrap 4 时不显示内容

javascript - 主干解析ajax响应函数没有被调用

Javascript "Show/Hide",非常简单,多平台/浏览器

javascript - 如何在 jQuery 中下载文件(已经使用 href 和 PreventDefault)?

javascript - jQuery : deferred/promise

javascript - 使用 Backbone 的模型#destroy 后,如何摆脱附加到 View 的模型?