【问题标题】:Populate angular ui bootstrap popover填充角度 ui 引导弹出框
【发布时间】:2016-07-26 08:10:02
【问题描述】:

如何填充 Angular 用户界面引导弹出框?我想用演员姓名列表填充弹出框。代码如下:

<div class="container" ng-if="radioModel=='Search for Actor'">
    <p>Movies played in:</p>
      <table class="table table-bordered">
        <tr ng-repeat="name in listOfMovies">
        <td>
        <p>
          <button uib-popover="populateWithListOfData" popover-trigger="mouseenter" type="button" class="btn btn-default"> {{ name }}</button>
        </p>   
       </td>
       </tr>
     </table>
 </div>

我希望能够为 ng-repeat 的每个名称填充此弹出框。所以我会得到一个电影的名字,基于这个名字我想用那个电影中的演员列表填充弹出框。谢谢各位。

【问题讨论】:

  • 那么什么不起作用?
  • 它说 uib-popover="populateWithListOfData" 我不知道如何填充弹出框。我只是将 populateWithListOfData 作为占位符。
  • 这是创建指令的好地方,因为在这种情况下,您必须根据电影名称返回 html。
  • 好的,但是如果我有我的数据列表,有没有办法在弹出框上运行循环来填充它?我从来没有真正创建过指令,因为我是 Angular 新手。
  • 我过去使用过类似的东西 plnkr.co/edit/ujp5AGHmMSCBn2ZXbc1S?p=preview 。我知道您想遍历这些数据?

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


【解决方案1】:

这绝对是可能的。 我在JS中设置了一个名为friends的数据项

$scope.friends = [
    {name:'John'},
    {name:'Jessie'},
    {name:'Johanna'},
    {name:'Joy'}
      ];

此外,还为弹出窗口中的文本创建了一个数组

$scope.toolTip =['D','A','C','T'];

如果你想为每一行显示一个弹出窗口。

我已经创建了 ng-repeat 和相关的弹出框。为了显示第一个弹出框中的所有字母。

<div ng-repeat="f in friends">
{{f.name}}
<button  uib-tooltip="{{toolTip[$index]}}" type="button" class="btn btn-default">Tooltip {{placement.selected}}</button>
</div>

这是一个working demo

它是如何工作的?

您的工具提示值设置为uib-tooltip="{{toolTip[$index]}}"。它根据从ng-repeat获得的$index访问每个元素。

如果要在第一次弹出窗口中显示所有数据

我已经创建了 ng-repeat 和相关的弹出框。为了显示第一个弹出框中的所有字母。

   <div ng-repeat="f in friends">
   <div ng-if="$index==0">
   <button  uib-tooltip="{{toolTip}}" type="button" class="btn btn-default">Tooltip {{placement.selected}}</button>
</div>
   {{f.name}}
   </div>

这是一个working demo

它是如何工作的?

您的工具提示值设置为uib-tooltip="{{toolTip}}"。如果满足条件,它将进入 ng-if ,从而打印数组。

【讨论】:

  • 但是在演示中看到每个字母都在不同的弹出框上,我需要的是第一个弹出框上显示的所有字母。
  • 这也很简单。你的数据列表是什么样的?
  • @sebenalern,是这样的吗? Link
  • 我删除了 [$index],它显示了每个弹出框上的所有数据。接受我的编辑,我会接受你的回答。感谢您的帮助!
  • @sebenalern,我想我在自己添加链接时丢失了编辑
【解决方案2】:

我无法测试它是否有效,但这可能会给你一些想法。

(function ()
{
    function moviePopover($compile)
    {
        return {
            restrict: "EA",
            scope: true,
            templateUrl: '<button uib-popover-template="dynamicPopover.templateUrl" popover-title="{{dynamicPopover.title}}" type="button" class="btn btn-default">Popover With Template</button>',
            link: function (scope, element, attrs)
            {
                scope.dynamicPopover = {
                    content: "Movies",
                    templateUrl: "myPopoverTemplate.html",
                    title: "Title"
                };

                if (attrs.movieName !== undefined)
                {
                    scope.movieList = getMoviesByName(attrs.movieName);
                    $compile(element)(scope);
                    //If 1st leads to infinit loop use this
                    //                    $compile(element.contents())(scope);
                }

                function getMoviesByName(movieName)
                {
                    //return all moviews based on movieName
                    //here im just returning dummy array(you return your data)
                    return ["Movie1", "Movie2"];
                }
            }
        }
    }

    angular.module("myApp").directive("moviePopover", ["$compile", moviePopover]);


}());
<script type="text/ng-template" id="myPopoverTemplate.html">
  <ul>
        <li ng-repeat="movie in movieList">{{movie}}</li>
  </ul>
</script>


<div class="container" ng-if="radioModel=='Search for Actor'">
    <p>Movies played in:</p>
      <table class="table table-bordered">
        <tr ng-repeat="name in listOfMovies">
        <td>
        <p>
          <movie-popover movie-name="{{name}}"></movie-popover>
        </p>   
       </td>
       </tr>
     </table>
 </div>

【讨论】:

  • 感谢您的回答。我认为这对我将来也有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
相关资源
最近更新 更多