附加到正文时,UI Bootstrap datepicker重复

时间:2017-09-07 17:26:45

标签: angularjs angular-ui-bootstrap angular-ui-grid angular-ui-datepicker

我在ui.bootstrap.datepickerPopup内的过滤器标头模板中使用ui.grid。这让我可以按日期过滤行。我还在网格菜单中有一个按钮,用于切换grid.options.enableFiltering

由于ui-grid的对齐问题,我的日期选择器设置为datepicker-append-to-body。我第一次启用过滤,一切正常。但是,当我禁用过滤并重新启用它时,我会得到重复的日期选择器。

这就是问题所在:

我认为问题在于每次启用过滤器时,以下div会附加到DOM,并且在禁用过滤器时永远不会删除。

<div uib-datepicker-popup-wrap=""
     ng-model="date"
     ng-change="dateSelection(date)"
     template-url="uib/template/datepickerPopup/popup.html"
     class="ng-pristine ng-untouched ng-valid ng-scope ng-empty ng-valid-date-disabled"
>
    <!-- ngIf: isOpen -->
</div>

这是一个简化的plunker: http://plnkr.co/edit/eYZt87j2O6A5xhjHj5ZG
如果我只在Time Range过滤器标头中使用一个日期选择器,我会遇到同样的问题。

非常感谢任何想法!不想使用jQuery。

1 个答案:

答案 0 :(得分:1)

我没有回答为什么会这样,但是没有jQuery的解决方案是在使用document.querySelectorAll()

触发过滤器切换时删除弹出窗口
var elements = document.querySelectorAll("div[uib-datepicker-popup-wrap]");
Array.prototype.forEach.call(elements, function(node) {
     node.parentNode.removeChild(node);
});

Plunker here