让我们说我有弹出指令,继承在$ 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进行复制。
有人可以帮我避免这种行为吗?
答案 0 :(得分:0)
您需要等待摘要周期。例如,在$timeout
调用中使元素可见:
$el.find('content-container').append($compile($scope.template)($scope));
$timeout($scope.makeVisible);
// or $timeout(function() { $scope.makeVisible(); });