【问题标题】:angular-js present an array as 2d tableangular-js 将数组呈现为二维表
【发布时间】:2015-01-10 15:28:18
【问题描述】:

我的模型中有很多书:

(function() {
  var app = angular.module("googleBooksViewer", []);
  var mainController = function($scope, $http) {
    $scope.search = function(bookname) {
      $http.get("https://www.googleapis.com/books/v1/volumes?q=" + bookname)
        .then(function(response) {
          $scope.books = response.data;
        });
    };
  };
  app.controller("mainController", mainController);
})();

我知道我可以使用ng-repeat 将书籍缩略图显示为一个列表,但我希望它以每行 8 个缩略图的表格填充屏幕。 有没有办法在我的视图 html 中做到这一点,或者我是否必须在我的模型中创建二维数组?

【问题讨论】:

  • 能否请您在从 api 返回的问题中发布示例 json。
  • 返回的 json 非常大,但本质上它是一个具有缩略图属性的项目数组

标签: html angularjs ng-repeat


【解决方案1】:

我会说这更多的是 CSS 问题。您可以对book 块使用 % width 以使它们每行占用 8 个块(12.5% 宽度)。那么带有ngRepeat 的 HTML 将非常简单:

<div class="container">
    <div class="book" ng-repeat="book in books">
        {{book.title}} ...
    </div>
</div>

主要工作由 CSS 完成:

.container .book {
    width: 12.5%;
    float: left;
    /* ... */
}

查看下面的演示。

.container {
    overflow: hidden;
    border: 1px #DDD solid;
}
.container .book {
    width: 12.5%;
    float: left;
    padding: 5px;
    background: #EEE;
    box-sizing: border-box;
    border: 1px #AAA solid;
}
<div class="container">
    <div class="book">Book title 1</div>
    <div class="book">Book title 2</div>
    <div class="book">Book title 3</div>
    <div class="book">Book title 4</div>
    <div class="book">Book title 5</div>
    <div class="book">Book title 6</div>
    <div class="book">Book title 7</div>
    <div class="book">Book title 8</div>
    <div class="book">Book title 9</div>
    <div class="book">Book title 10</div>
    <div class="book">Book title 11</div>
    <div class="book">Book title 12</div>
    <div class="book">Book title 13</div>
    <div class="book">Book title 14</div>
    <div class="book">Book title 15</div>
    <div class="book">Book title 16</div>
    <div class="book">Book title 17</div>
    <div class="book">Book title 18</div>
    <div class="book">Book title 19</div>
    <div class="book">Book title 20</div>
    <div class="book">Book title 21</div>
    <div class="book">Book title 22</div>
    <div class="book">Book title 23</div>
    <div class="book">Book title 24</div>
</div>

【讨论】:

  • 感谢详细解答!
猜你喜欢
  • 2017-01-13
  • 2010-11-29
  • 2011-02-28
  • 2019-01-23
  • 1970-01-01
  • 2011-12-04
  • 2022-06-17
  • 2018-11-20
  • 2021-01-30
相关资源
最近更新 更多