मैंने अपने निर्देश को इस तरह अपने तत्व में जोड़ने के लिए एक टेम्पलेट में खींचने के लिए अपना निर्देश दिया है:
# 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>
मैं डेटाटेबल्स नामक एक jQuery प्लगइन का भी उपयोग कर रहा हूं। इसका सामान्य उपयोग इस प्रकार है: $ ('तालिका # some_id')। डेटाटेबल ()। आप JSON डेटा को डेटाटेबल में पास कर सकते हैं () टेबल डेटा की आपूर्ति करने के लिए कॉल करें या आपके पास पृष्ठ पर पहले से ही डेटा हो सकता है और यह बाकी काम करेगा .. मैं बाद में कर रहा हूं, HTML पृष्ठ पर पहले से पंक्तियाँ हैं ।
लेकिन समस्या यह है कि मुझे टेबल पर #T_items AFTER DOM के लिए डेटाटेबल () कॉल करना होगा। ऊपर मेरा निर्देश डेटाटेबल कहता है () विधि के तत्व से पहले टेम्पलेट को जोड़ा जाता है। क्या कोई ऐसा तरीका है जिसे मैं एपेंड के बाद फ़ंक्शन कह सकता हूं?
आपके सहयोग के लिए धन्यवाद!
एंडी के जवाब के बाद अपडेट 1:
मैं यह सुनिश्चित करना चाहता हूं कि लिंक पद्धति केवल AFTER कहलाती है सब कुछ पेज पर है इसलिए मैंने थोड़ा सा निर्देश के लिए निर्देश बदल दिया:
# 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>"
}
और मैं वास्तव में div # sayboo में "बू" देखता हूं।
फिर मैं अपने jquery डेटा को कॉल करने का प्रयास करता हूं
.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') %>"
}
वहां कोई किस्मत नहीं
फिर मैं एक समय जोड़ने की कोशिश करता हूं:
.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') %>"
}
और वह काम करता है। तो मुझे आश्चर्य है कि कोड के गैर-टाइमर संस्करण में क्या गलत है?