11

我正在使用UI Bootstrap (AngularJS) 中的 Ui-bootstrap 弹出窗口。

页面边框的弹出框似乎超出了屏幕...

有没有更好的方法来定位弹出框 - 所以它可以留在屏幕内?

如您所见,弹出框已被剪切...

在此处输入图像描述

angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('PopoverDemoCtrl', function ($scope) {
  $scope.dynamicPopover = {
    content: 'Hello, World!',
    templateUrl: 'myPopoverTemplate.html',
    title: 'Title'
  };
});
<!doctype html>
<html ng-app="ui.bootstrap.demo">
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular-animate.js"></script>
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.14.3.js"></script>
    <script src="example.js"></script>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>

    <div ng-controller="PopoverDemoCtrl">
      <h4>Dynamic</h4>
      <div class="form-group">
        <label>Popup Text:</label>
        <input type="text" ng-model="dynamicPopover.content" class="form-control">
      </div>
      <div class="form-group">
        <label>Popup Title:</label>
        <input type="text" ng-model="dynamicPopover.title" class="form-control">
      </div>
      <div class="form-group">
        <label>Popup Template:</label>
        <input type="text" ng-model="dynamicPopover.templateUrl" class="form-control">
      </div>
      <button uib-popover="{{dynamicPopover.content}}" popover-title="{{dynamicPopover.title}}" type="button" class="btn btn-default">Dynamic Popover</button>

      <button uib-popover-template="dynamicPopover.templateUrl" popover-title="{{dynamicPopover.title}}" type="button" class="btn btn-default">Popover With Template</button>

      <script type="text/ng-template" id="myPopoverTemplate.html">
        <div>{{dynamicPopover.content}}</div>
        <div class="form-group">
          <label>Popup Title:</label>
          <input type="text" ng-model="dynamicPopover.title" class="form-control">
        </div>
      </script>
      <hr />
      <h4>Positional</h4>
      <button popover-placement="top" uib-popover="On the Top!" type="button" class="btn btn-default">Top</button>
      <button popover-placement="left" uib-popover="On the Left!" type="button" class="btn btn-default">Left</button>
      <button popover-placement="right" uib-popover="On the Right!" type="button" class="btn btn-default">Right</button>
      <button popover-placement="bottom" uib-popover="On the Bottom!" type="button" class="btn btn-default">Bottom</button>

      <hr />
      <h4>Triggers</h4>
      <p>
        <button uib-popover="I appeared on mouse enter!" popover-trigger="mouseenter" type="button" class="btn btn-default">Mouseenter</button>
      </p>
      <input type="text" value="Click me!" uib-popover="I appeared on focus! Click away and I'll vanish..."  popover-trigger="focus" class="form-control">

      <hr />
      <h4>Other</h4>
      <button popover-animation="true" uib-popover="I fade in and out!" type="button" class="btn btn-default">fading</button>
      <button uib-popover="I have a title!" popover-title="The title." type="button" class="btn btn-default">title</button>
    </div>
  </body>
</html>

http://plnkr.co/edit/QQxfc4BlHceJwt8zulKu?p=preview

4

1 回答 1

2

正如其他人在评论中所说,UI Bootstrap 不支持自动定位弹出框,而且将来似乎不太可能。

也就是说,您可以执行以下任何操作来提供帮助:

  1. 确保您使用的是容器、行和列...这将为您提供 Boostrap 中的“正确”填充,这将有助于确保(尽管不能保证)弹出框不会离开屏幕。

  2. 如果您的元素位于左侧,请始终将工具提示放在右侧。同样,这应该有所帮助,但不能保证。

  3. 使用支持Bootstrap 4的 UI Bootstrap 分支,它对弹出框有更好的自动定位(以及其他改进)。这是一个看起来维护得很好的选项。

于 2019-01-14T22:45:33.193 回答