2013-04-01 131 views
1

我的骨幹項目和視圖的初始化函數內的工作,我想設置一個監聽器集合,像這樣:爲什麼.on()工作但.listenTo()失敗?

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

但是這並不醒目的事件。什麼是極其混亂的是,這實際上是工作在原來的位置:

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

有誰知道爲什麼會發生?如果必須,我只會使用on,但我更願意利用listenTo方法。

謝謝!

UPDATE:

請參閱下面關於這個問題的情況下,更多的信息我的答案...

回答

1

好吧,我想通了,問題是什麼(在某種程度上),如果這個我不知道問題應該被關閉......但我想我會分享這個以防萬一任何人有同樣的問題,並沒有被關閉。

在原來的視圖的子視圖中,我有一個事件哈希看起來像以下:

// ...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") }); 
} 

我沒有提及的是,我模擬了'keyup'事件的子使用jQuery,例如。 $('input').trigger('keyup')(這是用於自動測試的目的)。出於某種原因,我不太清楚,Backbone不喜歡這樣。更奇怪的是,這個屬性實際上會改變!因此,上面的方法on ...也許有人在那裏可以向我解釋爲什麼會出現這種情況(也許keyup事件的某些屬性丟失,並且listenTo不喜歡那樣?)

+0

從來沒有遇到過這個,但好奇你使用的骨幹版本是什麼?是否有任何錯誤? –

+0

1.0.0,不會出現任何錯誤: - / – AndyPerlitch

相關問題