Backbone 在渲染后添加更多事件?
Backbone adding more events after render?
如何在将集合呈现到视图后添加更多事件。
我有一个需要绑定事件的所有元素 ID 的列表。
目前我正在尝试使用 jQuery onclick 来触发对我视图中函数的回调。
问题是我认为函数调用在 jQuery 单击事件中未定义。
我查看了 Backbone 文档,它说要使用 delegateEvents 但是文档没有显示示例....
http://documentcloud.github.io/backbone/#View-delegateEvents
//add more dynamic events for the rendered employee list
addMoreEvents: function ()
{
console.log("List View - Add More DOM Events");
for (var i = 0; i < this.employees.models.length; i++)
{
var element = "#" + this.employees.models[i].attributes.id;
//bind event that when user clicks on <li> on employeelist , it will go fetch all the tasks for that employee
$(element).click(this.getEmployeeInfo()); //not working!
}
}
必须有一种简单的方法可以将事件添加到渲染后存在的元素中。
谢谢
你的做法是错误的。不要试图直接绑定到 #some-id
元素上的点击事件,您应该将 class 附加到您想要点击的东西上,然后使用视图的正常 events
对象。
例如,您的视图 el
:
中的 HTML 中会有这样的内容
<li class="item" id="6">Where</li>
<li class="item" id="11">is</li>
<li class="item" id="23">pancakes</li>
<li class="item" id="42">house?</li>
然后你会看到 events
像这样:
events: {
'click .item': 'getEmployeeInfo'
}
然后您的点击处理程序 getEmployeeInfo
可以查看 ev.currentTarget.id
以获取所点击项目的 id
属性:
getEmployeeInfo: function(ev) {
var id = ev.currentTarget.id; // this will be the model's `id`
// do whatever needs to be done...
}
如何在将集合呈现到视图后添加更多事件。
我有一个需要绑定事件的所有元素 ID 的列表。
目前我正在尝试使用 jQuery onclick 来触发对我视图中函数的回调。
问题是我认为函数调用在 jQuery 单击事件中未定义。
我查看了 Backbone 文档,它说要使用 delegateEvents 但是文档没有显示示例....
http://documentcloud.github.io/backbone/#View-delegateEvents
//add more dynamic events for the rendered employee list
addMoreEvents: function ()
{
console.log("List View - Add More DOM Events");
for (var i = 0; i < this.employees.models.length; i++)
{
var element = "#" + this.employees.models[i].attributes.id;
//bind event that when user clicks on <li> on employeelist , it will go fetch all the tasks for that employee
$(element).click(this.getEmployeeInfo()); //not working!
}
}
必须有一种简单的方法可以将事件添加到渲染后存在的元素中。
谢谢
你的做法是错误的。不要试图直接绑定到 #some-id
元素上的点击事件,您应该将 class 附加到您想要点击的东西上,然后使用视图的正常 events
对象。
例如,您的视图 el
:
<li class="item" id="6">Where</li>
<li class="item" id="11">is</li>
<li class="item" id="23">pancakes</li>
<li class="item" id="42">house?</li>
然后你会看到 events
像这样:
events: {
'click .item': 'getEmployeeInfo'
}
然后您的点击处理程序 getEmployeeInfo
可以查看 ev.currentTarget.id
以获取所点击项目的 id
属性:
getEmployeeInfo: function(ev) {
var id = ev.currentTarget.id; // this will be the model's `id`
// do whatever needs to be done...
}