我有一個很簡單的事件對象(在CoffeeScript中,因爲它是甜)視圖骨幹事件代表團eventName的問題
APP.bb.Recipe_Index = Backbone.View.extend
template: JST['templates/Recipe_Index']
el: $ "#recipes"
events:
'click a' : 'testFunction'
testFunction:() ->
console.log 'test called'
return 'this function'
我的活動沒有約束。當我到線967在unminified 0.5.3 Backbone.js的文件
delegateEvents : function(events) {
//snip
for (var key in events) {
var method = this[events[key]];
if (!method) throw new Error('Event "' + events[key] + '" does not exist');
var match = key.match(eventSplitter);
var eventName = match[1], selector = match[2];
method = _.bind(method, this);
eventName += '.delegateEvents' + this.cid;
if (selector === '') {
$(this.el).bind(eventName, method);
} else {
$(this.el).delegate(selector, eventName, method); <-- THIS ONE
}
}
},
它使用不正確的jQuery的語法時,我有一個斷點在Chrome設置結束:
selector == 'a'
eventName == click.delegateEventsview8'
method == 'function() {[native code]}'
的選擇是正確的,但我不知道爲什麼在第963行有一個附加到我的'click'字符串,它指示事件類型。該方法在用下劃線綁定之前讀取爲我的console.log
方法,所以這是正確的。
最終結果是我的事件沒有被觸發。想知道我在這裏搞錯了什麼。
感謝您的任何意見!
剛剛在渲染模板之後調用'this.delegateEvents()'嗎?如果你不用'initialize'方法創建'this.el'包含所有內容,這個動作是必需的。爲什麼?因爲'this.delegateEvents'只在'initialize'方法後自動調用。 – nagisa 2012-01-01 17:07:31