Saya baru saja mendapatkan arahan saya untuk menarik template untuk menambahkan elemennya seperti ini:
# CoffeeScript
.directive 'dashboardTable', ->
controller: lineItemIndexCtrl
templateUrl: "<%= asset_path('angular/templates/line_items/dashboard_rows.html') %>"
(scope, element, attrs) ->
element.parent('table#line_items').dataTable()
console.log 'Just to make sure this is run'
# HTML
<table id="line_items">
<tbody dashboard-table>
</tbody>
</table>
Saya juga menggunakan Plugin jQuery yang disebut DataTables. Penggunaan umumnya adalah seperti ini: $ ('table # some_id'). DataTable (). Anda dapat mengirimkan data JSON ke panggilan dataTable () untuk menyediakan data tabel ATAU Anda dapat memiliki data pada halaman dan akan melakukan sisanya .. Saya melakukan yang terakhir, memiliki baris sudah di halaman HTML .
Tetapi masalahnya adalah bahwa saya harus memanggil dataTable () pada tabel # line_items SETELAH DOM siap. Arahan saya di atas memanggil metode dataTable () SEBELUM template ditambahkan ke elemen direktif. Apakah ada cara agar saya dapat memanggil fungsi SETELAH append?
Terima kasih untuk bantuannya!
PEMBARUAN 1 setelah jawaban Andy:
Saya ingin memastikan bahwa metode tautan tidak hanya dipanggil SETELAH semuanya ada di laman, jadi saya mengubah arahan untuk sedikit tes:
# CoffeeScript
#angular.module(...)
.directive 'dashboardTable', ->
{
link: (scope,element,attrs) ->
console.log 'Just to make sure this gets run'
element.find('#sayboo').html('boo')
controller: lineItemIndexCtrl
template: "<div id='sayboo'></div>"
}
Dan saya memang melihat "boo" di div # sayboo.
Kemudian saya mencoba panggilan datatable jquery saya
.directive 'dashboardTable', ->
{
link: (scope,element,attrs) ->
console.log 'Just to make sure this gets run'
element.parent('table').dataTable() # NEW LINE
controller: lineItemIndexCtrl
templateUrl: "<%= asset_path('angular/templates/line_items/dashboard_rows.html') %>"
}
Tidak beruntung di sana
Lalu saya mencoba menambahkan batas waktu:
.directive 'dashboardTable', ($timeout) ->
{
link: (scope,element,attrs) ->
console.log 'Just to make sure this gets run'
$timeout -> # NEW LINE
element.parent('table').dataTable()
,5000
controller: lineItemIndexCtrl
templateUrl: "<%= asset_path('angular/templates/line_items/dashboard_rows.html') %>"
}
Dan itu berhasil. Jadi saya bertanya-tanya apa yang salah dalam versi kode non-timer?