UI-Bootstrap Popover离开屏幕

时间:2015-11-22 12:38:51

标签: twitter-bootstrap angular-ui-bootstrap twitter-bootstrap-tooltip

我正在使用 UI Bootstrap (AngularJS)中的Ui-bootstrap popover。

并且页面边框中的popover似乎离开了屏幕...

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

你可以看到popover被切断......

enter image description here



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>
&#13;
&#13;
&#13;

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

1 个答案:

答案 0 :(得分:1)

正如其他人在评论中说的那样,UI Bootstrap不支持自动定位弹出窗口,并且将来似乎不太可能。

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

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

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

  3. 使用支持 Bootstrap 4 的UI Bootstrap分支,该分支对弹出窗口的自动定位要好得多(还有其他改进)。 Here's one option似乎得到了很好的维护。