Popover AngularJs 快速消失

Popover AngularJs quickly disappearing

'Thanks'弹出窗口在第一次尝试时运行良好,但在后续尝试中它很快消失。

我最初使用 uib-popover 并将其模板设置为带有简单输入文本和按钮的 <div>。然后单击提交,我再次将模板设置为简单的“Thanks<div>。它在第一次尝试时显示良好,但在后续尝试中很快消失。

请注意,4 对拇指是由 ng-repeat 渲染的,并且使用索引

隔离了对项目进行的每个操作

这是我的 full code in public repo

快速查看相关代码:

不赞成的标记:

<span class="feedback-separator">|</span>
<span
   uib-popover-template="this.templates[result.id]"
   popover-trigger="'outsideClick'"
   ng-class="{
         'feedback-down-unselected' : !this.feedbackIsBadCollection[result.id],
         'feedback-down-selected' : this.feedbackIsBadCollection[result.id],
         'no-hover' : this.feedbackUpTogglerList[result.id] || this.feedbackIsBadCollection[result.id] 
   }"                       
>
</span>

弹出框模板:

<div>
   <p>{{ this.subTitle }}</p>
   <input type="text" ng-model="reason" />
   <br />
   <button ng-click="this.submit(reason, result.id)">Submit</button>
</div>

控制器代码:

$scope.submit = (reason, id) => {
    $scope.templates[id] = $sce.trustAsResourceUrl("thanks.html");
    $scope.sendFeedback(true, id, reason);
}

我们只需要在切换到“thanks.html”之前添加一些 50 毫秒的延迟。当您更改内容弹出窗口时,随着内容的更改,js 需要时间重新计算元素的位置。

在切换到 thanks.html 之前添加 $timeout。

feedbackApp.controller('feedbackCtrl', function ($scope, $sce, $timeout) {

$timeout(function () {
            $scope.templates[id] = $sce.trustAsResourceUrl("thanks.html");
        }, 50);