gpt4 book ai didi

javascript - 为什么 .on() 可以工作但 .listenTo() 失败?

转载 作者:行者123 更新时间:2023-11-28 02:20:18 27 4
gpt4 key购买 nike

我正在开发一个 Backbone 项目,在 View 的初始化函数内部,我试图在集合上设置一个监听器,如下所示:

this.listenTo(this.collection, "change:attr", this.render)

但是这并没有捕捉到事件。非常令人困惑的是,这实际上在它的位置上起作用:

this.collection.on("change:attr", this.render);

有谁知道为什么会发生这种情况?如果必须的话,我只会使用 on 但我更愿意利用 listenTo 方法。

谢谢!

更新:

请参阅下面我的回答,了解有关此问题情况的更多信息...

最佳答案

好吧,我弄清楚了问题是什么(有点),并且不确定这个问题是否应该关闭......但我想我会分享这个问题,以防有人遇到同样的问题并且它没有关闭。

在原始 View 的 subview 中,我有一个如下所示的事件哈希:

// ...in subview definition
events: {
'keyup input': 'changeAttr'
},
changeAttr: function(){
var value = this.$('input').val();
this.model.set('attr', value); // this.model is in the collection
}

通过此设置,这是有效的:

// inside parent_view:
initialize: function() {
this.collection.on('change:attr', function(){ alert("changed") });
}

...但这失败了:

initialize: function() {
this.listenTo('change:attr', function() { alert("changed") });
}

我没有提到的是,我正在使用 jQuery 模拟 subview 上的“keyup”事件,例如。 $('input').trigger('keyup') (这是用于自动化测试目的)。由于某种我不太清楚的原因,Backbone 不喜欢这样。更奇怪的是,属性竟然会改变!因此上面的 on 方法可以工作...也许有人可以向我解释为什么会出现这种情况(也许 keyup 事件的某些属性丢失了,而 ListenTo 不喜欢这样?)

关于javascript - 为什么 .on() 可以工作但 .listenTo() 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15749555/

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