2016-03-28 34 views
0

比方說,我有彈出指令,它繼承在$範圍模板witch是彈出窗口應顯示的彈出窗口內容的字符串模板。

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

撥弄鏈接,請 – Nirus

+0

http://plnkr.co/edit/FehvteTvZ92e4MFZNaHj?p=preview這裏的例子,似乎它與templateUrl僅重現,但問題是一樣的。 –

回答

0

您需要等待摘要循環。例如使元素的$timeout通話中可見:

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

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