代码之家  ›  专栏  ›  技术社区  ›  Razvan Zamfir

如果知道页数,如何在angularjs中创建页面项?

  •  2
  • Razvan Zamfir  · 技术社区  · 6 年前

    我正在开发一个小应用程序,它在 HTML5表格 是的。它使用bootstrap 3和angularjs。我想给这张桌子分页。

    我没有数组要循环通过,重复ng。我有一个 这个 页数 是的。

    使用jquery,我可以:

    var pageMax = 10;
    
    var paginationItems = [];
    for(var i=0; i<pageMax; i++){
        var paginationItem = '<li><a href="#">' + (i + 1) + '</a></li>';
        paginationItems.push(paginationItem);
    }
    var paginationSum = paginationItems.reduce((a, b) => a + b, '');
    $('.pagination').html(paginationSum);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
    
    <div class="text-center">
      <ul class="pagination"></ul>
    </div>

    在angularjs中,上述for循环的等价物是什么?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Gaurav Srivastava    6 年前

    在角度上,你可以这样做:

    angular.module('app', [])
      .controller('Controller', function($scope) {
       $scope.pageMax = 10;
       
       $scope.pages = new Array($scope.pageMax);
      })
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    
    <body ng-app="app">
      <div ng-controller="Controller">
        <div class="text-center">
        <h3>Initialized in template:</h3>
          <ul class="pagination">
            <li ng-repeat="n in [].constructor(pageMax) track by $index">
              <a href="#">{{$index+1}}</a>
            </li>
          </ul>
          
          <h3>Initialized in controller:</h3>
          <ul class="pagination">
            <li ng-repeat="n in pages track by $index">
              <a href="#">{{$index+1}}</a>
            </li>
          </ul>
        </div>
      </div>
    </body>
        2
  •  2
  •   Razvan Zamfir    6 年前

    你可以用 ng-repeat 做这个。

    请注意,当您要呈现 HTML 你必须使用 $sce.trustAsHtml 让angularjs真正呈现html。你可以用 ng-bind-html HTML 是的。

    var app = angular.module("Dummy", []);
    
    var DummyController = function($scope, $sce) {
      var pageMax = 10;
    
      $scope.paginationItems = [];
    
      for (var i = 0; i < pageMax; i++) {
        var item = $sce.trustAsHtml('<a href="#">' + (i + 1) + '</a>');
        $scope.paginationItems.push(item);
      }
    }
    
    app.controller(DummyController, ["$scope, $sce", "DummyController"]);
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    <div ng-app="Dummy">
      <div class="text-center" ng-controller="DummyController">
        <ul class="pagination">
          <li ng-bind-html="item" ng-repeat='item in paginationItems'></li>
        </ul>
      </div>
    </div>