如何定义$ compile服务何时完全完成角度编译

时间:2016-03-28 13:18:23

标签: javascript angularjs angularjs-directive

让我们说我有弹出指令,继承在$ scope模板中,是弹出窗口应该显示的弹出窗口内容的字符串模板。

scope: {
   template: '=popInfo'//<div another directive></div>
}

这个模板字符串可以包含另一个指令,所以我使用$ compile服务来编译它。这样的事情:

$el.find('content-container').append($compile($scope.template)($scope));
$scope.makeVisible();//after i've compiled i'm making it visible

它有效,但存在看起来像闪烁的副作用。 首先显示弹出容器,然后显示内容。

http://plnkr.co/edit/FehvteTvZ92e4MFZNaHj?p=preview - 这是一个例子。似乎它仅使用templateUrl进行复制。

有人可以帮我避免这种行为吗?

1 个答案:

答案 0 :(得分:0)

您需要等待摘要周期。例如,在$timeout调用中使元素可见:

$el.find('content-container').append($compile($scope.template)($scope));
$timeout($scope.makeVisible);

// or $timeout(function() { $scope.makeVisible(); });