5

(このデータテーブルについて知る必要はないことに注意してください。)

DataTablesを処理するためのディレクティブを作成しています。私がやりたいのは、編集と削除の2つのアイコンを持つアクション列を作成することです。これらのアイコンは、ng-clickに応答するはずです。

Datatablesを使用すると、特定の列定義(mRender)にコールバックを提供することでこれを行うことができます。このコールバックは、そのセル値のhtml文字列を返します。これは、実際のセル値の代わりにDOMに挿入されます。

このプランカーをチェックしてください。2つの重要な機能が強調表示されています。

  • renderActionIcon-上記のコールバックの私の実装。セルに必要なHTML文字列を生成します。
  • registerNewHtmlWithAngular-その列に登録する必要があるng-clicksについてAngularに表面上通知する関数。

何を入れるべきregisterNewHtmlWithAngularですか?

$ compile the htmlの場合、angularは適切なクリックイベントリスナーを追加して要素を返しますが、Datatables関数はHTMLを想定しているため、これらの登録済み要素はDOMに追加されません。

何か案は?皆さん、ありがとう!

4

2 に答える 2

10

キーボードを叩いて一日を過ごした後:

htmlに$compileしてDOMで使用できるようにする方法はないようです。イベントリスナーが失われないように、DOMに挿入される要素である必要があります。

この特定のシナリオで問題を解決した方法は、HTMLを挿入し、後で新しいHTMLで$compileを実行することです。

Datatablesは、コールバックを使用してこれを簡単にしfnCreatedRowます。コールバックは、行がレンダリングされた後、行のElementを返し、それを使ってやりたいことを何でもできるようにします。この場合、行に対して$ compileを実行し、Datatablesに戻しました。rowCompiler更新されたプランカーの関数を参照してください。

于 2013-02-07T15:25:34.423 に答える
0

datatablesはinnerHTML=mRender(...)を使用してhtmlを挿入するため(とにかく何でも文字列に変換され、$compile関数の結果が失われます。ハックなしでmRenderでそれを行う方法はないと思います-forたとえば、データテーブルを少し変更して、innerHTMLの代わりに$ .appendを使用することもできます。ただし、これは適切な方法ではないため、プロジェクトではng-clickの代わりに通常のjqueryバインディングを使用します。

于 2013-02-07T05:39:49.207 に答える