Tôi vừa nhận được chỉ thị của mình để lấy một mẫu để nối vào phần tử của nó như thế này:
# 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>
Tôi cũng đang sử dụng một Plugin jQuery có tên là DataTables. Cách sử dụng chung của nó là như thế này: $ ('bảng # some_id'). DataTable (). Bạn có thể chuyển dữ liệu JSON vào lệnh gọi dataTable () để cung cấp dữ liệu bảng HOẶC bạn có thể có dữ liệu trên trang và nó sẽ làm phần còn lại .. Tôi đang thực hiện sau, có các hàng đã có trên trang HTML .
Nhưng vấn đề là tôi phải gọi dataTable () trên bảng # line_items SAU DOM đã sẵn sàng. Lệnh của tôi ở trên gọi phương thức dataTable () TRƯỚC KHI mẫu được gắn vào phần tử của lệnh. Có cách nào để tôi có thể gọi các chức năng SAU khi nối thêm không?
Cảm ơn sự giúp đỡ của bạn!
CẬP NHẬT 1 sau câu trả lời của Andy:
Tôi muốn đảm bảo rằng phương thức liên kết chỉ được gọi là SAU mọi thứ đều có trên trang vì vậy tôi đã thay đổi chỉ thị cho một thử nghiệm nhỏ:
# 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>"
}
Và tôi thực sự thấy "boo" trong div # sayboo.
Sau đó, tôi thử cuộc gọi dữ liệu jquery của tôi
.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') %>"
}
Không có may mắn ở đó
Sau đó, tôi cố gắng thêm thời gian chờ:
.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') %>"
}
Và nó hoạt động. Vì vậy, tôi tự hỏi những gì sai trong phiên bản không hẹn giờ của mã?