当前位置: 首页 > 面试题库 >

如何对使用ng-repeat生成的表使用UI Bootstrap分页

云慈
2023-03-14
问题内容

我正在尝试使用Angular应用程序保持分页uib-pagination。我无法找到执行此操作的正确方法。

的HTML

<table id="mytable" class="table table-striped">
  <thead>
    <tr class="table-head">
      <th>Name</th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="person in aCandidates">
      <th>
        <div>{{person}}</div>
      </th>
    </tr>
  </tbody>
</table>

控制者

$scope.totalItems = $scope.aCandidates.length;
$scope.currentPage = 1;
$scope.itemsPerPage = 10;

我能够看到分页栏,但是没有执行任何操作,即使将total-items设置为10,也将呈现整个表数据。

uib分页的工作原理以及数据(在这种情况下aCandidates)如何与分页相关联。


问题答案:

您缺少的部分是必须具有从整个数组中获取当前页面数据的功能。我添加了一个函数setPagingData()来处理此问题。

您可以在分叉的拨蓬中看到这一点

var app = angular.module("plunker", ["ui.bootstrap"]);



app.controller("MainCtrl", function($scope) {

  var allCandidates =

      ["name1", "name2", "name3", "name4", "name5",

       "name6", "name7", "name8", "name9", "name10",

       "name11", "name12", "name13", "name14", "name15",

       "name16", "name17", "name18", "name19", "name20"

      ];



  $scope.totalItems = allCandidates.length;

  $scope.currentPage = 1;

  $scope.itemsPerPage = 5;



  $scope.$watch("currentPage", function() {

    setPagingData($scope.currentPage);

  });



  function setPagingData(page) {

    var pagedData = allCandidates.slice(

      (page - 1) * $scope.itemsPerPage,

      page * $scope.itemsPerPage

    );

    $scope.aCandidates = pagedData;

  }

});


<link data-require="bootstrap-css@*" data-semver="4.0.0-alpha.2" rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.2/css/bootstrap.min.css" />

<script>document.write('<base href="' + document.location + '" />');</script>

<script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>

<script data-require="ui-bootstrap@*" data-semver="1.3.2" src="https://cdn.rawgit.com/angular-ui/bootstrap/gh-pages/ui-bootstrap-tpls-1.3.2.js"></script>



<div ng-app="plunker">

  <div ng-controller="MainCtrl">

    <table id="mytable" class="table table-striped">

      <thead>

        <tr class="table-head">

          <th>Name</th>

        </tr>

      </thead>

      <tbody>

        <tr ng-repeat="person in aCandidates">

          <th>

            <div>{{person}}</div>

          </th>

        </tr>

      </tbody>

    </table>

    <uib-pagination total-items="totalItems" ng-model="currentPage" items-per-page="itemsPerPage"></uib-pagination>

  </div>

</div>


 类似资料:
  • 问题内容: 我正在尝试将模型中的数据插入模板,但是我想每7次重复添加一个新的表行。使用基于strign的模板,我可以使用迭代索引和模来相当容易地做到这一点,但是我无法弄清楚如何使用angular的DOM模板来做到这一点。 这是HTML: 而javascript类似于: 您可以在JSFiddle中查看以下代码:http : //jsfiddle.net/3zhbB/2/ 问题答案: 请与天数组的数组

  • 问题内容: 我正在尝试将页面添加到我的列表中。我遵循了有关智能手机的AngularJS教程,我试图仅显示一定数量的对象。这是我的html文件: 我添加了带有某些值的select标记,以限制将要显示的项目数。我现在想要的是添加分页以显示下一个5、10等。 我有一个与此相关的控制器: 而且我还有一个模块,以便从json文件中检索数据。 问题答案: 如果您没有太多数据,则可以通过将所有数据存储在浏览器中

  • 问题内容: 我想问你是否可以帮我这个忙。 我在这里用我的问题创建了一个jsfiddle 。我需要使用ng-model =“ my _ {{$ index}}”方式在ng-repeater中动态生成一些带有ng-model的输入。 在jsfiddle中,您可以看到一切正常,直到我尝试动态生成它为止。 HTML将是: 还有javascript … 你能给我个主意吗? 非常感谢。 问题答案: 它能解决您

  • 问题内容: 我正在开发一个页面,我需要在其中显示一些框(使用),其中包含频道信息以及显示位置(城市)。 我面临的问题是当我重复第二遍时: 这应该获得第一个ng-repeat的$ index值,并使用显示频道的位置创建一个新数组。它确实做到了。但是,当我使用此数组应用第二个ng- repeat时,它无法正常工作。 说我的html看起来像这样(PS:我需要使用索引值而不是因为我将这些框放到列中) JS

  • 问题内容: 我正在使用AngularJS,并且假设它可以工作(不起作用),我想获得的效果将类似于它将产生的效果。 视图 控制者 我意识到该代码将无法使用,因为它不可用,因为它将仅可用于每一行内的对象。该代码是为了让我了解正在尝试做的事情:即。我希望能够使用其类也基于条件的表行来创建,该条件取决于对行本身的范围功能的访问。。我意识到我 可以 在列上添加ng- class,但这很无聊。有人有更好的主意

  • 问题内容: 我正在使用像这样的过滤器渲染对象列表: 我尝试对列表的排序进行ng动画处理的尝试令人沮丧,因此不值得分享。我在这里看到了Yearofmoo示例应用程序。 不幸的是,这个演示并不是我想要实现的。在定义更改后,当给定列表项以新顺序放置时,我需要设置其X位置的动画。我试图通过css过渡和绝对定位来实现这一点,但是似乎在使动画成为真正的挑战时重新创建了列表项。 (使用或不使用 )是否可能? 您