html - Angular Material 将表格转换为小屏幕上的方框

标签 html angularjs html-table angular-material

我有一个采用 Angular Material 设计的 AngularJS 网站。在一个屏幕上,我有一张表格,这就是我的问题,因为 Material 设计中的表格并没有真正响应。

我的问题:是否可以在大屏幕上显示普通表格,并在小屏幕上显示页面时将表格信息从单行转换为盒状布局?像这样的事情:

Name   |   City   |   Gender
------------------------------
Alice  |   NY     |   f
Bob    |   LA     |   m

这张 table 在大屏幕上。以及较小屏幕上的以下设计。

Name   Alice
City   NY
Gender f
-------------
Name   Bob
City   LA
Gender m

我知道屏幕尺寸(xs、sm、...)的布局选项。

我尝试在较小的屏幕上显示基于此代码的表格,但所有信息都在一行中。并且每个属性都不是一行。

<tr md-row ng-repeat="person in persons">
  <th md-cell>Name</th>
  <td md-cell>{{person.name}}</td>
  <th md-cell>State</th>
  <td md-cell>{{person.state}}</td>
  <th md-cell>Gender</th>                   
  <td md-cell>{{person.gender}}</td>
</tr>

结果:

Name Alice City NY Gender f
...

有什么好的办法可以解决我的问题吗?或者我不知道的另一种方法?

最佳答案

这就是我要做的 - CodePen

该解决方案非常灵活,可以更改用户信息。

标记

<div ng-controller="AppCtrl" ng-cloak="" ng-app="MyApp" layout-fill>
  <div ng-if="showRow">
    <div ng-repeat="user in users">
      <div ng-if="$first">
        <div layout="row">
          <span flex ng-repeat="(key, value) in users[0]">
            {{key}}
          </span>
        </div>
        <md-divider></md-divider>
      </div>
      <div layout="row">
        <span flex ng-repeat="(key, value) in user">
          {{value}}
        </span>
      </div>
    </div>
  </div>

  <div display="column" ng-if="showColumn">
    <div ng-repeat="user in users">
      <div ng-repeat="(key, value) in user" layout="row">
        <span flex>{{key}}</span>
        <span flex>{{value}}</span>
      </div>
      <md-divider></md-divider>
    </div>
  </div>
</div>

JS

angular.module('MyApp',['ngMaterial', 'ngMessages'])

.controller('AppCtrl', function($scope, $mdMedia, $window) {
  $scope.users = [
    {Name: "Alice", City: "NY", Gender: "f"},
    {Name: "Bob", City: "LA", Gender: "m"}
  ];
  $scope.showColumn = false;
  $scope.showRow = true;

  display();

  angular.element($window).bind("resize", function() {
    display();
    $scope.$apply();
  });

  function display () {
     if ($mdMedia("gt-xs")) {
        $scope.showColumn = false;
        $scope.showRow = true;
      }
      else if ($mdMedia("xs")) {
        $scope.showColumn = true;
        $scope.showRow = false;
      }
  }
});

关于html - Angular Material 将表格转换为小屏幕上的方框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38760712/

相关文章:

css - 如何使用下面的 css 作为表行 (tr) 的内联?

html - 如何在表中嵌套表?

javascript - 如何给jquery按钮添加边框

javascript - 如何仅在 JS/jQuery 中处理冲突?

javascript - Angular 中 $viewContentLoaded 的奇怪行为

AngularJS 表达式连接而不是添加

php - 如何在 PHP 中的表格中显示搜索结果

php - 更改选择选项值时网页上偶尔显示白色空白

html - 如何轻松隐藏表格标题元素?

javascript - 如何使用underscore.js对文本混合数字进行排序