如何在加载指令angualrjs的模板之前调用范围函数

时间:2015-09-12 18:26:21

标签: javascript angularjs twitter-bootstrap

我正在使用bootsrap popover https://angular-ui.github.io/bootstrap/这里是文档,我正在做一个基本上<button popover-template="dynamicPopover.templateUrl" popover-title="{{dynamicPopover.title}}" type="button" class="btn btn-default">Popover With Template</button>这个的指令。由于某种原因,我不得不重载引导程序的定位功能,使其响应,以便我可以在可见的屏幕上显示弹出窗口,

我做了一个功能

scope.getPopoverOnPosition = fucntion {....}

在这个函数中我设置了一个scope.Position变量。

在模板中我正在做"<button popover-template="dynamicPopover.templateUrl" popover-title="{{dynamicPopover.title}}" type="button" popover-placement='{{position}}' class="btn btn-default">Popover With Template</button>" (指定方向会给出一个相对指向按钮的箭头,并设置弹出窗口的顶部和左侧位置)。 问题是弹出窗口首先打开而且没有方向,然后它会闪烁一次然后就会有方向。

我猜测的是,稍后会调用fucntion并在之前初始化tmeplate。当范围更改时,更改将反映为重新生成DOM。有没有什么方法可以实现这个功能而没有一点儿的陈词滥调?

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,我认为问题在于您需要在设置位置后手动显示弹出框,而不是使用触发器自动显示:&#39;手动&#39;。

然后定义一个mouseenter和mouseout回调。在mouseenter回调中设置位置并显示弹出窗口并在mouseout回调中隐藏它:

$('...').on('mouseenter', function() {
    //set placement then...
    $(this).popover('show');
});

$('...').on('mouseout', function() {
    $(this).popover('hide');
});

像这样,弹出窗口不会首先自动显示在错误的位置,但只有在定义了位置后才会显示。