第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Angular JS指令有后期渲染回調(diào)嗎?

Angular JS指令有后期渲染回調(diào)嗎?

慕哥6287543 2019-10-25 14:51:40
我剛剛得到指令,將模板插入到其元素中,如下所示:# 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>我還使用了一個名為DataTables的jQuery插件。它的一般用法是這樣的:$('table#some_id')。dataTable()。您可以將JSON數(shù)據(jù)傳遞到dataTable()調(diào)用中以提供表數(shù)據(jù),或者可以將數(shù)據(jù)存儲在頁面上,其余的將由數(shù)據(jù)完成。.我正在做后者,HTML頁面上已經(jīng)有行。但是問題是我必須在準(zhǔn)備好DOM之后在table#line_items上調(diào)用dataTable()。我上面的指令在將模板附加到指令的元素之前,先調(diào)用dataTable()方法。有沒有一種方法可以在追加之后調(diào)用函數(shù)?謝謝您的幫助!安迪回答后的更新1:我想確保鏈接方法僅在頁面上所有內(nèi)容之后都被調(diào)用,因此我更改了指令進(jìn)行了一些測試:# 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中看到了“ boo”。然后我嘗試我的jQuery數(shù)據(jù)表調(diào)用.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') %>"    }那行得通。因此,我想知道非計時器版本的代碼出了什么問題?
查看完整描述

3 回答

?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗 獲得超8個贊

我遇到了同樣的問題,我相信答案確實是不。請參閱Mi?ko的評論和小組中的一些討論。


Angular可以跟蹤它為操縱DOM而進(jìn)行的所有函數(shù)調(diào)用均已完成,但是由于這些函數(shù)可能會觸發(fā)異步邏輯,這些邏輯在返回后仍會更新DOM,因此我們不希望Angular知道它。任何回調(diào)角度給出了可能有時會工作,但不會是安全的依靠。


與您一樣,我們使用setTimeout啟發(fā)式解決了這一問題。


(請記住,并非所有人都同意我的觀點-您應(yīng)該閱讀上面鏈接上的評論,然后看看您的想法。)


查看完整回答
反對 回復(fù) 2019-10-25
  • 3 回答
  • 0 關(guān)注
  • 821 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號