5

我在renderbackbone.js 的函数中绑定了一些事件,更具体地说是a click,但是,我无法让它工作。

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

App.ProductView = Backbone.View.extend({

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

events: {
    'click .product_list .edit_product' : 'edit',

对于我的主干视图的事件部分。在渲染函数中,我希望触发绑定.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');

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

我想:

this.trigger('click .product_list .edit_product');

然而,会工作,再次没有运气。

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

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

4

1 回答 1

2

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

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

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

(我想delegateEvents如果你真的需要这样做的话,你可以手动调用)

于 2013-04-12T08:29:47.243 回答