5

renderbackbone.jsの関数、より具体的には のいくつかのイベントに関連付けてclickいますが、動作させることができません。

私は同様の(しかし非常に単純化された)セットアップを持っています:

App.ProductView = Backbone.View.extend({

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

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

私のバックボーン ビューのイベント セクションの場合。render 関数内で、バインドされた.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要素の for は定義されていませんが、ビューの残りの部分がそれに応じて機能するため、イベントが機能することはわかっています。render起動時に、または他の場所でイベントをトリガーできないようです。

私は考えました:

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

ただし、うまくいきますが、やはり運が悪いです。

私も聞いbindAllたことがありますが、これを使用するのは得策ではないと聞きました。

では、バックボーン ビューのスタートアップ イベントをトリガーするにはどうすればよいのでしょうか。

4

1 に答える 1

2

だから、あなたはこれが面白いと思うかもしれません(注:バックボーンのコード):

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

特に最後の部分。イベントは、initialize メソッドが呼び出された後にバインドされるため、render メソッドが呼び出された後にバインドされます。イベントはまだバインドされていません。

delegateEvents(本当に自分のやり方でやる必要がある場合は、手動で呼び出すことができると思います)

于 2013-04-12T08:29:47.243 に答える