我刚刚得到了我的指令来引入一个模板来附加到它的元素:
# 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>
Run Code Online (Sandbox Code Playgroud)
我还使用了一个名为DataTables的jQuery插件.它的一般用法是这样的:$('table#some_id').dataTable().您可以将JSON数据传递到dataTable()调用以提供表数据,或者您可以将数据放在页面上,然后它将完成其余的工作.我正在执行后者,将行放在HTML页面上.
但问题是我必须在DOM准备就绪之后调用表#line_items上的dataTable().上面的我的指令在模板附加到指令元素之前调用dataTable()方法.有没有办法可以在附加后调用函数?
谢谢您的帮助!
安迪回答后更新1:
我想确保链接方法仅在页面上的所有内容之后调用,因此我更改了指令以进行一些测试:
# 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>"
}
Run Code Online (Sandbox Code Playgroud)
我确实在div#sayboo中看到了"boo".
然后我尝试我的jquery数据表调用
.directive 'dashboardTable', ->
{
link: (scope,element,attrs) ->
console.log 'Just to make sure this gets run' …Run Code Online (Sandbox Code Playgroud) angularjs ×1