0

AngularJS と angular-datatable ライブラリを使用しています。行をクリックしてモーダルを呼び出す必要があります。コードの私の部分は次のとおりです。

  function rowCallback(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
    // Unbind first in order to avoid any duplicate handler (see https://github.com/l-lin/angular-datatables/issues/87)
    $('td', nRow).unbind('click');
    $('td', nRow).bind('click', function() {
      console.log(aData.title);
      $timeout(function(){
        Modal.showModal({
         template : 'views/Modal.html',
         Data : aData
         });
      }, 0);
    });
    return nRow;
  }

console.log 関数はどのような方法でも正常に動作しますが、モーダル関数の呼び出しは、タイムアウトにラップした場合にのみ期待どおりに動作します。それで、誰かがなぜこれが起こっているのか説明できますか?最初の関数だけがうまく機能するのはなぜですか? どんな説明にも感謝します。

4

2 に答える 2

0

ブラウザーのレンダリング エンジンがページのレンダリングを完了するときのコールバックはありません。

ただし、ページのレンダリングはイベント キューによって処理されます。$timeout 関数を使用することで、Modal.showModal をイベント キューの最後(既にキューに入れられたページ レンダリング メソッドの後) に割り当てます。

したがって、Modal.showModal は、ページがレンダリングされて正しく機能した後に呼び出されます。

于 2015-10-14T10:34:35.530 に答える