如何在页面上反映数据更改时添加promise/event?

How to add promise/event when data change is reflected on page?

考虑这样的场景 -- 我在网页上有两个中继器 A 和 B,还有一个按钮,单击时调用函数 "load_data"。

该函数将加载数据并成功(承诺)它将设置两个范围变量 A 和 B。

剩下的是 angular 工作——它会注意到 A 或 B 已更改,并且会重新呈现给定的转发器。

但我想向其中添加 post-action -- 承诺或事件,名称并不重要,一般来说,任何通知我变量 A 上的所有渲染的机制 B完成了

我的背景故事很单薄——我必须在渲染后测量几个元素的大小和位置。我找到了一个指令( http://gsferreira.com/archive/2015/03/angularjs-after-render-directive/ ),它基本上添加了事件 "after-render" 但它是面向元素的并且适用于选定的元素。当我在寻找更面向数据的东西时,使用了数据,更新了 所有 元素。

范围更新后(如果您在 Angular 摘要周期内,否则您可能需要 $apply 范围),Angular 将更新 DOM 在同一个同步堆栈中。

这意味着任何异步执行的代码都将在 Angular 完成消化后执行。所以你可以使用 setTimeout$timeout:

mypromise.then(function() {

  $scope.model = 'updated';

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

})