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...
}