2

私はこのようなバックボーンビューを持っています:

var newrow=Backbone.View.extend({

        el:"<table>",
        events:{
            'click .edit':'editrow',
            'click .delete':'deleterow'
            },


            render: function()
            {
                data=this.model.toJSON();
                $('table').dataTable().fnAddData([data.name,data.email,data.contact_number,'<span class="edit">Edit</span><span class="delete">Delete</span>']);
                return this;
            },

            editrow:function(){
                alert ("edit);
            },

            deleterow:function(){
            alert("delete");
            }
        })

クラス「編集」のスパンを持つtdでクリックイベントを添付する必要があります。データテーブル関数を使用して動的に行を追加しているため、これが機能しないことはわかっています。事前にレンダリングされたデータテーブルに行を追加しようとしています。解決策は何ですか。

PS私はすでに他のビューで空のテーブルをレンダリングしました。これは正常に機能し、データテーブルに行が追加されます。しかし、要素にクリック イベントを追加する方法がわかりません。

4

1 に答える 1

3

あなたの見解から少しずれていることはほとんどありません。それらを修正すれば、うまくいくかもしれません。

  • el:"<table>"試してみる代わりにtagName:"table"。これは、ビューの新しい要素を設定する正しい方法です。

  • の代わりに$('table').dataTable()。試してみてくださいthis.$el.dataTable()。前者はページ内のすべてのテーブル要素の選択を実行し、後者はビューの ( <table>) 要素を参照します。

追加する要素がビュー内にある限りel、イベントは自動的に接続されます。何らかの理由で機能しない場合は、this.delegateEvents()新しい行を挿入してから呼び出してみてください。

于 2013-01-31T12:45:21.213 に答える