backbone.js在render()中触发事件

Sam*_*aye 5 javascript jquery backbone.js

我在renderbackbone.js函数中遇到了一些事件,更具体地说是a click,然而,我无法让它工作.

我有类似(但非常简化)的设置:

App.ProductView = Backbone.View.extend({

className: 'title_products_tab',
el: $('.title_products_tab'),

events: {
    'click .product_list .edit_product' : 'edit',
Run Code Online (Sandbox Code Playgroud)

对于我的骨干视图的事件部分.在渲染函数中,我希望触发绑定.edit_product click事件:

render: function(){
        console.log($._data( $('.title_products_tab .product_list .edit_product')[0], "events" ));
        $('.title_products_tab .product_list .edit_product').trigger('click');
Run Code Online (Sandbox Code Playgroud)

哪个不起作用,_data元素是未定义的,但是,我知道事件确实有效,因为我的视图的其余部分相应地起作用.我似乎无法render在启动时或其他任何地方触发事件.

我想:

this.trigger('click .product_list .edit_product');
Run Code Online (Sandbox Code Playgroud)

但是会工作,再没有运气.

我也听说过,bindAll但我听说使用它不是一个好主意.

那么我如何,或者更确切地说,何时触发我的骨干视图的启动事件?

Loa*_*oof 2

所以你可能会发现这很有趣(注意:Backbone 的代码):

var View = Backbone.View = function(options) {
  this.cid = _.uniqueId('view');
  this._configure(options || {});
  this._ensureElement();
  this.initialize.apply(this, arguments);
  this.delegateEvents();
};
Run Code Online (Sandbox Code Playgroud)

尤其是最后一部分。事件在调用初始化方法之后绑定,因此在调用渲染方法之后绑定。事件尚未绑定。

(我想delegateEvents如果您确实需要按照您的方式进行操作,您可以手动调用)