Bootstrap UI:如何更改popover

时间:2015-08-14 17:18:01

标签: angularjs twitter-bootstrap angular-ui-bootstrap popover

我试图通过创建自定义popover类来覆盖现有的类型来改变Bootstrap UI popover的背景颜色(例如popover1popover2等,而不是{ {1}})。我知道这适用于vanilla Bootstrap popovers(这里是fiddle,但它似乎不适用于Bootstrap UI popovers)。

当我将相同的方法应用于Bootstrap UI popover时,它只显示一个很小的空白弹出窗口。到目前为止,我所做的只是改变

popover

<a class="btn btn-primary popover-container" id="popover" data-toggle="popover" data-placement="right" data-container="body" rel="log-popover">Log level</a>

日志级别-template.html

<a class="btn btn-primary popover-container" popover-placement="right" popover-template="'partials/loglevel-template.html'" popover-trigger="click">Log level</a>

当我删除<div class="popover1"> <div class="arrow"></div> <div class="popover-content"> <p>some content</p> </div> </div> 课程时,它就可以了,只有弹出窗口才能显示。

我更喜欢使用Bootstrap UI popovers,因为你不必在jQuery中使用任何硬编码模板tomfoolery(实际上你根本不必编写任何jQuery)。我无法弄清楚如何更改Bootstrap UI popover的背景颜色。在我走下兔洞之前,我想知道是否有其他人已经实现了这一点,或者是否有一个简单的修复(也许Bootstrap UI popovers使用一组不同于vanilla popovers的类)。如果它是覆盖一些CSS类的问题,那将是梦想。

1 个答案:

答案 0 :(得分:3)

遗憾的是,在UI Bootstrap文档中没有记录这一点,我(也不幸的是)花了几个小时来找到这个非常简单的解决方案,但希望这会节省一些其他人的时间。您可以将popover-class属性添加到放置uib-popover指令的元素,然后相应地设置弹出窗口的样式。有关详细信息,请参阅下面的代码段:

&#13;
&#13;
angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']);
angular.module('ui.bootstrap.demo').controller('PopoverDemoCtrl', function ($scope, $sce) {
  
  $scope.dynamicPopover = {
    content: 'Hello, World!',
    templateUrl: 'myPopoverTemplate.html',
    title: 'Title'
  };

});
&#13;
.trigger-popover-button {
  margin: 25% 0 0 10%;
}

.custom-dynamic-popover-class {
  color: red;
}

.custom-dynamic-popover-class > .popover-inner > .popover-title {
  background: yellow;
}

.custom-dynamic-popover-class > .popover-inner > .popover-content {
  background: blue;
}
&#13;
<!doctype html>
<html ng-app="ui.bootstrap.demo">
  <head>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular-animate.js"></script>
    <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.3.3.js"></script>
    <script src="example.js"></script>
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>

    <div ng-controller="PopoverDemoCtrl">
    
      <button uib-popover-template="dynamicPopover.templateUrl" 
              popover-title="{{dynamicPopover.title}}" 
              popover-class="custom-dynamic-popover-class"
              type="button" 
              class="btn btn-default trigger-popover-button">
        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>
   
    </div>
  </body>
</html>
&#13;
&#13;
&#13;