1

クリックイベントを削除ボタンにバインドしようとしている次のビューがありますが、何もトリガーしていないようです。コンソールでエラーが発生しません。「クリック」イベントをバインドしていないようです。

span.delete 要素は、他の要素の束の中に深くネストされています。それが重要かどうかはわかりません。直接の子要素としても試しましたが、まだうまくいきません。

var ListRow = Backbone.View.extend(
{
    events:
    {
        'click span.delete': 'remove'
    },

    initialize: function()
    {
        _.bindAll(this, 'render', 'unrender', 'remove');

        this.model.bind('remove', this.unrender);
    },

    render: function()
    {
        this.el = _.template($('#tpl-sTableList_' + key + 'Row').html());

        return this;
    },

    unrender: function()
    {
        $(this.el).fadeOut();
    },

    remove: function()
    {
        this.model.destroy();
    }
});
4

2 に答える 2

2

モデルにはデフォルトのremoveイベントはなく、コレクションからの削除イベントのみが存在するため、モデルがコレクションから削除されたときにビューを削除する場合は、

this.collection.bind('remove', this.onRemove, this);

ListViewで(例に基づいてListViewとListItemViewを使用していると想定しているため)、onRemoveメソッドはモデルを引数として渡し、それに関連付けられているビューを見つけることができます。

于 2012-05-15T22:38:48.343 に答える
0

問題が見つかりました。これは、el オブジェクトを設定するだけで、レンダリングしていないためです。代わりに:

this.el =

する必要があります

$(this.el).html();

それ以外の場合は、すべて期待どおりに機能します。

于 2012-05-16T16:29:03.203 に答える