2016-09-18 38 views
1

考慮這種情況 - 我在網頁上有兩個中繼器A和B,以及點擊時調用函數「load_data」的按鈕。如何在頁面上反映數據更改時添加承諾/事件?

該函數將加載數據和上成功(許諾)將設置兩個範圍變量A和B.

其餘的是角的工作 - 它會注意到A或B被改變,它將重新呈現給定中繼。

但我想添加一個後續操作 - 一個承諾或事件,名稱並不重要,任何通常會通知我的變量A B的渲染完成的機制。

背景故事在我的情況下很薄 - 我必須測量幾個元素渲染後的大小和位置。我發現了一個指令(http://gsferreira.com/archive/2015/03/angularjs-after-render-directive/),它基本上添加了事件「渲染後」,但它是面向元素的,適用於選定的元素。當我在尋找更多面向數據的數據時,使用了數據,所有元素都已更新。

回答

1

只要範圍更新(如果您處於Angular digest週期內,否則您可能需要$apply作用域),Angular會更新同一個同步堆棧中的DOM。

這意味着任何異步執行的代碼將在Angular完成消解之後執行。所以,你可以使用setTimeout$timeout

mypromise.then(function() { 

    $scope.model = 'updated'; 

    $timeout(function() { 
    // This code will be executed after DOM has been updated 
    }); 

}) 
+0

我很抱歉遲到的答覆,不過我對你的幫助表示感謝。我很高興解決方案非常簡單,非常感謝您的解釋! – greenoldman

相關問題