[英]Using variable for selectors in events
由於某種原因,我需要使用一個變量作為骨干事件的選擇器,但我無法想象如何做到這一點:
app.views.Selfcare = Backbone.View.extend({
events: {
click window.parent.document .close : "closeWindow"
},
closeWindow: function() {
//code
}
});
我必須使用不同的范圍,我不能做“click .close”:“closeWindow”。
謝謝你的幫助。
我查看了Backbone.js的源代碼,發現如果你的視圖的events
是一個函數,那么函數被調用,它的返回值被用作events
對象。
這意味着您的代碼可以像這樣更改:
app.views.Selfcare = Backbone.View.extend({
events: function() {
var _events = {
// all "standard" events can be here if you like
}
_events["events" + "with variables"] = "closeWindow";
return _events;
},
closeWindow: function() {
//code
}
});
這是源代碼中有趣的部分:
if (_.isFunction(events)) events = events.call(this);
更新:
JSFiddle HERE上提供了示例**
我不確定你能否在那里使用變量。 您可以使用內置的Events方法(請參閱文檔 )添加自定義偵聽器,然后向window.parent.document
添加一個事件偵聽器以觸發該自定義事件(使用Events.trigger方法)。
也就是說,將此事件與Backbone完全分離會更容易(除非您不想這樣做),然后沿着addEventListener路由:
app.views.Selfcare = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render', 'closeWindow');
if(this.options.clickTarget) {
this.options.clickTarget.addEventListener('click', this.closeWindow, false);
}
},
render: function() {
// Render to the DOM here
return this; // as per Backbone conventions
},
closeWindow: function() {
// Stuff here
}
});
// Usage:
var mySelfcare = new app.views.Selfcare({
clickTarget: window.parent.document
});
我認為這應該有用,雖然我沒有測試過(並且可能有一兩個語法錯誤!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.