javascript
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: ""
}
那行得通。因此,我想知道非計時器版本的代碼出了什么問題?
總結
以上是生活随笔為你收集整理的angular 指令渲染_Angular JS指令有后期渲染回调吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1 字节的 utf-8 序列的字节 1
- 下一篇: jmeter时间函数格林尼治时间_Jme