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

将角度引导UI分页连接到表

云令
2023-03-14
问题内容

我正在努力在要创建的桌子上设置角度分页。

我已经完成了文档工作。但是,我没有看到如何将分页连接到表。我的分页大小与数组大小匹配。它们是正确数量的按钮链接,用于页面的页面长度。但是,我的桌子仍然全长,无法测试分页。

这是我的桌子主体

     <tbody>
                <tr ng-repeat="drink in editableDrinkList | orderBy:'-date'"> 
                    <td>[[drink.name]]</td>
                    <td>[[drink.date |date: format :timezone]]</td>
                    <td>[[drink.caffeineLevel]]</td>
                    <td>
                        <a ng-click="delete(drink._id)">
                            <i style="font-size:18px; margin-right:5%" class="fa fa-times"></i>
                        </a>

                        <a href="" ng-click="update(drink)">
                            <i style="font-size:22px;" class="fa fa-pencil-square-o"></i>
                        </a>
                    </td>
                </tr>
     </tbody>

我已经将表格主体设置在 表格标签的 外面,在里面尝试了它,但是我的分页控件没有出现。

这是我的分页

<pagination  
        total-items="totalItems" 
        ng-model="currentPage" 
        items-per-page="itemsPerPage" 
        ng-change="pageChanged()" 
        ng-click="setPage(currentPage)">
</pagination>

我还设置了一个 p标签,以确保选项卡响应

   <div> 
        <p>total Items [[totalItems]]</p>
        <p>itemsPerPage [[itemsPerPage]]</p>
        <p>current page [[currentPage]]</p>
    </div>

段落内的总项目,每页项目和当前页面均对分页控制器上的每次单击做出响应。但是表格没有改变。

这是我的控制器

var editabledrinkSet = function(){
      editableArray = [];

      DrinkLibrary.getAllDrinks().success(function(data){
        for (var i = 0; i < data.length; i++) {
          if(data[i].editable) {
            editableArray.push(data[i])
          };
        };
        $scope.currentPage = 1;
        $scope.totalItems = editableArray.length;

        $scope.itemsPerPage =10;
        $scope.maxSize = 3;

        $scope.setPage = function(pageNo) {
          $scope.currentPage = pageNo;
        }
        $scope.pageChanged = function() {
          $log.log('Page changed to: ' + $scope.currentPage);
        };

        $scope.editableDrinkList = editableArray;
      });
    };

当它起作用时,我会将其大部分移入指令中。我只想先设置它。


问题答案:

您可以使用自定义过滤器执行此操作。

将自定义过滤器添加到ngRepeat

您需要能够告诉重复项,哪个索引将成为每个页面的起点,以及页面上要包含多少个项目。您可以通过创建一个简单的过滤器(我称之为页面)来做到这一点。该过滤器将使用您已经在控制器中设置的currentPage和itemsPerPage值。

<tr ng-repeat="drink in editableDrinkList | orderBy:'-date' | pages: currentPage : itemsPerPage">

创建自定义过滤器

要创建自定义过滤器,请传入您的名称,然后传入一个返回辅助函数的工厂函数。worker函数自动接收输入数组作为其第一个值。后续值是您在过滤器中指定的值。

因此,页面过滤器获取输入数组和传递给它的两个值(currentPage和pageSize)。然后,您将只使用Array.slice将新数组返回到重复数组。请记住,过滤器是非破坏性的。他们没有改变实际的作用域数组。他们正在创建一个新的数组以供重复使用。

app.filter('pages', function() {
  return function(input, currentPage, pageSize) {
    //check if there is an array to work with so you don't get an error on the first digest
    if(angular.isArray(input)) {
      //arrays are 0-base, so subtract 1 from the currentPage value to calculate the slice start
      var start = (currentPage-1)*pageSize;
      //slice extracts up to, but not including, the element indexed at the end parameter,
      //so just multiply the currentPage by the pageSize to get the end parameter
      var end = currentPage*pageSize;
      return input.slice(start, end);
    }
  };
});

将分页指令添加到页面

这是您将添加到html中的指令的清理版本。 不要 在分页指令上 使用某种ngClick或ngChange
。ngModel设置为currentPage变量,因此您无需执行其他任何操作。由于currentPage是通过ngModel双向绑定的,因此当它更改时,分页指令以及页面过滤器都会更新,而页面过滤器又会更新重复的表行。

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

就这么简单。如果要查看有效的演示,请检查Plunker。



 类似资料:
  • 我正在学习一门连接node.js和Angular的课程。我正在按照教程,但我得到了一个错误,我不知道该怎么办。有人能帮忙吗? 这是我得到的错误 TypeError:错误。json不是CatchSubscriber的函数。CatchSubscriber上的eval[作为选择器](message.service.ts?5cfd:25)。MapSubscriber出现错误(catchError.js?0

  • 我在webstorm上创建了一个客户端angular,在Eclipse上创建了一个Spring Boot服务器。问题是,当我尝试打开会话时,会收到以下错误消息: 无法添加xml文件(工作上下文限制)... 我完全被堵住了,我需要你的帮助!

  • 问题内容: 我正在创建一个Webapp,我想实现一个添加好友的选项。我已将添加好友页面创建为带有文本输入字段的模式。我想通过在视图页面上显示输入来进行测试。如何在我的视图页面上显示这些数据? 这是我目前拥有的 index.html 我的JavaScript文件: plunkr:http ://plnkr.co/edit/JIoiNx47KXsY8aqbTUDS?p=preview 问题答案: 解决

  • 我有一个单页角应用与Spring引导。它看起来如下所示: Spring Boot正确地默认为webapp文件夹,并为index.html文件服务。 我想做的是:

  • 问题内容: 我首先使用body标签中的ng-app =“ myApp”初始化我的应用,这对于在首页加载时加载的所有angularized-html都适用。 稍后,我有一些代码将angularized-html加载到DOM中。 在angular 1.08中,我可以在加载后只运行angular.bootstrap($ newLoadHTML,[“ myApp”]),它将可以正常工作。$ newLoad

  • 我需要编写一个使用Spring Boot控制器和多部分文件的上传角度模块。但是当我上传文件时,我有一个错误 我尝试了很多更改,但每次都出现这个错误。这是我的angular file sender数据服务 这是我的控制器 它无法使用或不使用多部分解析器。你能帮我上传这个文件吗?