gpt4 book ai didi

javascript - 主干 View 事件未触发

转载 作者:行者123 更新时间:2023-12-02 23:16:03 25 4
gpt4 key购买 nike

我使用 Rails3 作为我的后端,并使用 Jammit 来进行 Assets ...现在我尝试不压缩甚至打包 Assets 。

简单事件没有运行,但alert('asd') int初始化正在按预期工作。

我也已经在其他对象中尝试过其他类型的事件,但没有成功。

我的代码如下:

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

和我的 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' %>.

生成这个:

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

最佳答案

主干 View 发生在元素的上下文中。为了使此代码正常工作,您必须在构造时将该元素分配给 View ,如下所示:

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

...

或者将包含产品查找器的特定 DOM 对象分配给 el。作为替代方案,您可以动态生成元素并使用 jQuery 将其附加到 DOM。两者我都用过。

Backbone 使用 jQuery 委托(delegate)来指定其事件并使其上下文化。如果您没有为整个 View 指定父元素,Backbone 不会正确分配事件管理器。

关于javascript - 主干 View 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6393174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com