简体   繁体   English

Backbone View事件未触发

[英]Backbone View events not firing

I am using Rails3 as my backend and Jammit to asset... Now I am trying to not compress and even package the asstes. 我使用Rails3作为我的后端,Jammit使用资产......现在我试图不压缩甚至打包这些。

The simple event don't get run, but the alert('asd') int inialize is working as expected. 简单事件不会运行,但警报('asd')int inialize正在按预期工作。

I have already tryed other kinds of events in other objects too, but it didn't work. 我已经在其他对象中尝试了其他类型的事件,但它没有用。

My code as follow: 我的代码如下:

var InvoiceStock = Backbone.View.extend({
  initialize: function(args) {
    _.bindAll(this, 'find_product', 'product_added');

    this.products = new ProductCollection();

    this.products.bind('add', this.product_added);

    alert('asd');
  },

  events: {
    "keypress #product_finder": "find_product"
  },

  find_product: function(e) {
    alert('teste');
  },

  product_added: function(product) {
    alert('pqp4');
  }
});

and my RUBY HTML: 和我的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' %>.

which generates this: 产生这个:

<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>

Backbone views happen within the context of an element. 骨干视图发生在元素的上下文中。 In order for this code to work, you must assign that element to the View at construction time like this: 为了使此代码有效,您必须在构造时将该元素分配给View,如下所示:

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

...

Or assign to el the specific DOM object that contains the product finder. 或者为el分配包含产品查找器的特定DOM对象。 As an alternative, you can generate the element dynamically and use jQuery to attach it to your DOM. 作为替代方案,您可以动态生成元素并使用jQuery将其附加到DOM。 I've used both. 我用过这两个。

Backbone uses jQuery delegate to specify and contextualize its events. Backbone使用jQuery委托来指定和上下文化事件。 IF you don't specify the parent element for the entire view, Backbone does not assign the event manager correctly. 如果您没有为整个视图指定父元素,Backbone不会正确分配事件管理器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM