2011-06-18 5 views
18

J'utilise Rails3 comme mon backend et Jammit à l'actif ... Maintenant, j'essaie de ne pas compresser et même empaqueter les asstes.Backbone Voir les événements ne tirant pas

L'événement simple n'est pas exécuté, mais l'alerte ('asd') int inialize fonctionne comme prévu.

J'ai déjà essayé d'autres types d'événements dans d'autres objets, mais cela n'a pas fonctionné.

Mon code comme suit:

et mon RUBY HTML:

<%= text_field 'search', :isbn_or_isbn10_or_publisher_or_authors_or_name_like, :id => 'product_finder' %> ou 
<%= link_to 'criar um produto', '', :id => 'new_product_link' %>. 

qui génère ceci:

<label>Adicionar</label> 
<input id="product_finder" class="ui-autocomplete-input" type="text" size="30" name="search[isbn_or_isbn10_or_publisher_or_authors_or_name_like]" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true"> 
ou 
<a id="new_product_link" href="">criar um produto</a> 

Répondre

57

vues Backbone se produisent dans le contexte d'un élément. Pour que ce code fonctionne, vous devez attribuer cet élément à la vue au moment de la construction comme celui-ci:

var InvoiceStock = Backbone.View.extend({ 
    el: $('#product_finder').parent() 

... 

Ou assigner à el l'objet DOM spécifique qui contient le viseur de produit. Comme alternative, vous pouvez générer l'élément dynamiquement et utiliser jQuery pour l'attacher à votre DOM. J'ai utilisé les deux. Backbone utilise le délégué jQuery pour spécifier et contextualiser ses événements. Si vous ne spécifiez pas l'élément parent pour l'ensemble de la vue, Backbone n'attribue pas le gestionnaire d'événements correctement.

+1

Travail effectué. Merci;) – pedrofs

+0

Désolé, nous sommes en ligne! – pedrofs

+2

FYI: La déclaration de $ el dans la fonction d'initialisation de la vue est également OK. – Fatmuemoo

Questions connexes