angular 指令渲染_Angular JS指令有后期渲染回调吗?

我刚刚得到指令,将模板插入到其元素中,如下所示:

# CoffeeScript

.directive 'dashboardTable', ->

controller: lineItemIndexCtrl

templateUrl: ""

(scope, element, attrs) ->

element.parent('table#line_items').dataTable()

console.log 'Just to make sure this is run'

# HTML

我还使用了一个名为DataTables的jQuery插件。它的一般用法是这样的:$('table#some_id')。dataTable()。您可以将JSON数据传递到dataTable()调用中以提供表数据,或者可以将数据存储在页面上,其余的将由数据完成。.我正在做后者,HTML页面上已经有行。

但是问题是我必须在准备好DOM之后在table#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#sayboo中看到了“ boo”。

然后我尝试我的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: ""

}

那里没有运气

然后我尝试添加超时:

.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: ""

}

那行得通。因此,我想知道非计时器版本的代码出了什么问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值