[英]How to define events dynamically in backbone.js
我的視圖中有更多點擊事件
events:{
'click #link1':'showDetails',
'click #link2':'showDetails',
'click #link3':'showDetails',
'click #link4':'showDetails',
'click #link5':'showDetails',
'click #link6':'showDetails',
'click #link7':'showDetails',
'click #link8':'showDetails',
'click #link9':'showDetails',
'click #link10':'showDetails',
'click #link11':'showDetails',
'click #link12':'showDetails',
'click #link13':'showDetails',
'click #link14':'showDetails',
'click #link15':'showDetails',
'click #link16':'showDetails',
'click #link17':'showDetails',
'click #link18':'showDetails',
'click #link19':'showDetails',
'click #link20':'showDetails',
'click #link21':'showDetails'
}
有沒有辦法讓它變得動態。 因為將來可能會增加點擊事件的數量。
注意:我可以在數組中獲取這些ID(#etox_link等)。
請發表您的建議。
你可以這樣做:
events:{
'click .link':'showDetails',
}
showDetails
: showDetails : function(e){
var _type = $(e.target).attr("id").toUpperCase();
var _callbackName = "show"+_type+"Details";
if(typeof this[_callbackName] !== "function") return console.log("No callback named:",_callbackName);
this[_callbackName].call(this,e);
},
showAESDetails : function(e){
console.log("Do something!");
}
編輯以響應OP評論:在此過程中,您必須為.link
元素中的每個ID
定義一個函數。 Backbone View的el
屬性必須是.link
的父級。 在內部對象{}
您需要使用:
=
當您定義variable
或function
,而不是使用this.
字首。 您必須定義新View
( new View
)才能看到腳本有效。
var View = Backbone.View.extend({
el : "body", //must be parent of .link elements
events:{
'click .link':'showDetails'
},
showDetails : function(e){
console.log("event");
var _type = $(e.target).attr("id").toUpperCase();
var _callbackName = "show"+_type+"Details";
this[_callbackName].call(this,e);
},
showAESDetails : function(e){ //an example of callback
console.log("Hello!");
}
//you must define the callback of all ID
});
new View();
注意 。
e.target
文檔: 這里
el
property documentation: 這里
此腳本適用於以下HTML:
<a class="link" id="link1" href="#">Foo</a>
<a class="link" id="link2" href="#">Foo</a>
<a class="link" id="link3" href="#">Foo</a>
<a class="link" id="link4" href="#">Foo</a>
<a class="link" id="link5" href="#">Foo</a>
<a class="link" id="link6" href="#">Foo</a>
<a class="link" id="link7" href="#">Foo</a>
<a class="link" id="link8" href="#">Foo</a>
<a class="link" id="link9" href="#">Foo</a>
<a class="link" id="link10" href="#">Foo</a>
<a class="link" id="link11" href="#">Foo</a>
<a class="link" id="link12" href="#">Foo</a>
<a class="link" id="link13" href="#">Foo</a>
<a class="link" id="link14" href="#">Foo</a>
<a class="link" id="link15" href="#">Foo</a>
<a class="link" id="link16" href="#">Foo</a>
<a class="link" id="link17" href="#">Foo</a>
<a class="link" id="link18" href="#">Foo</a>
<a class="link" id="link19" href="#">Foo</a>
<a class="link" id="link20" href="#">Foo</a>
<a class="link" id="link21" href="#">Foo</a>
例子: http : //jsfiddle.net/p10masvr/6/
... Byee
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.