Démarrage de l'événement Backbone sur le clic OU appuyez sur Entrée

Je suis nouveau dans la colonne vertébrale et je recherche un moyen de déclencher mon bouton lorsque j'appuie sur Entrée et en cliquant. Actuellement showPrompt s'exécute uniquement en un clic. Quelle est la façon la plus propre de DRYest de l'exécuter en appuyant sur Entrée aussi, de préférence uniquement pour ce champ de saisie.

(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; }()); 

Aussi, où puis-je lire plus sur ce genre de liaison d'événement? Les événements de backbone diffèrent-ils des événements JS ou jQuery sur la façon dont ils sont définis?

En supposant que vous utilisez jQuery pour la manipulation DOM. Créez un "petit" plugin qui déclenche l'événement Enter dans les entrées. Mettez-le sur vos plugins.js ou n'importe quel fichier de script d'installation que vous avez:

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

Ayant le plugin enter, Backbone.js devrait être quelque chose d'aussi simple que cela:

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

Vous pouvez ajouter un autre event à votre hash d' events dans AppView .

 events: { "click #add-friend": "showPrompt", "keyup #input-field-id" : "keyPressEventHandler" } 

#input-field-id est celui sur lequel vous souhaitez ajouter un événement.

Ensuite, ajoutez eventHandler dans AppView .

 keyPressEventHandler : function(event){ if(event.keyCode == 13){ this.$("#add-friend").click(); } } 

REMARQUE: Ce code n'est pas testé, mais vous pouvez le penser de cette façon.

Regardez ceci pour comprendre comment Backbone gère les events dans une View .