このバグについての記事は、angle-bootstrapを更新するか$ templateCacheにテンプレートを追加することで修正されていますが、これらの修正のどれも私のために働いていません。問題は、ポップオーバーがレンダリングされたときに初期位置が正しくない、つまり、ディレクティブが適用されている要素の代わりに0,0に配置されていることです。したがって、Popoverは0から正しい位置にジャンプします。表示されているポップオーバーは別のディレクティブの内側にあるので、おそらくそれが問題であるかどうかはわかりません。ang ui popover flicker wrong position
//ディレクティブ
(function(){
'use strict';
angular.module('myApp')
.directive('campaignItem', function() {
return {
restrict: 'A',
scope: {
campaigns: '=',
userRole: '@'
},
templateUrl: 'campaign.tpl.html',
link: function(scope, element, attr) {
}
};
})
.directive('campaignChangesPopover', function() {
return {
restrict: 'EA',
replace: true,
scope: {
ngModel: '='
},
template: '<a uib-popover-template="\'campaign-popover.html\'" popover-placement="right">Popover</a>',
link: function(scope, element, attr) {
}
};
});
});
// campaignItemテンプレート
...
<td colspan="3">
<strong>Recent Changes</strong>
<p><a campaign-changes-popover>view changes</a></p>
</td>
...
// campaignChangesPopoverテンプレート
<strong>Change Log</strong><br />
<span>Josh Fox Approved Policy 11/24/2015</span><br />
<span>Brian Adamski Changed Policy. 11/23/2015</span><br />
<span>Josh Fox Requested Change: Modify Policy. Date 11/20/2015</span><br />
<span>Brian Adamski Submitted Campaign for Approval 11/16/2015</span><br />
<span>Brian Adamskit Created Campaign 11/15/2015</span>
// $タイムアウトしてみました
template: '<a uib-popover-template="\'campaign-popover.html\'" popover-placement="right" popover-trigger="none" ng-click="showPopover()" popover-is-open="isOpen">Popover</a>',
link: function(scope, element, attr) {
scope.isOpen = false;
scope.showPopover = function() {
$timeout(function() {
scope.isOpen = !scope.isOpen;
}, 400);
};
}
ありがとうございますが、それでも動作しません。 $ timeoutを使って上記の私の編集を見てください。 – neridaj