zoukankan      html  css  js  c++  java
  • 如何用angularjs制作一个完整的表格之一__创建简单表格

    初步接手人生的第一个项目,需要用angularjs制作表格和实现各种功能,因此遇到了各种问题和以前不熟悉的知识点,在此记录下来,以供大家学习交流,解决方式可能并不完善或符合规范,如果大家有更好的方式欢迎指出,由于这个表格功能的制作是一点点添加上去的,因此我也分成几个部分介绍,日后如增加了新的功能也会不时更新的

    首先,表格采用的是BootStrap样式编辑的,主要使用的是angularjs,为了方便也有jQuery的方法,在测试时需自行引入bootstrap,angularjs和jq的文件。

    正文:

    HTML部分

    生成表格比较简单,主要是通过angularjs的数据绑定和ng-repeat来自动生成每一条信息。

    1.首先需要自定义表头的内容,即thead中的代码

      1.1其中ng-model是复选框的全选功能,通过绑定该状态的数据,可以将其同步赋予tbody中的所有checkbox(用ng-checked)

    2.在tbody中通过ng-repeat来循环生成其中的每一条信息,其中:

      2.1<div class="text" contenteditable="true" ng-model="tb.por"></div>是支持输入多行内容的div,可以方便快捷的替代textarea标签,但是由于ng-model不支持div的数据绑定,因此需要使用directive 来自定义ngmodel功能,后面会说

      2.3 在ng-repeat中使用select标签对其中进行数据绑定,也不能将ng-model绑定到每个option中,后面会有说明

    3.最后只要将数据赋给$scope.saveData即可生成表格

    <table class="table table-striped table-bordered table-hover"
                           id="example" style="margin-top:10px;">
                        <thead>
                        <tr>
                            <th style=" 20px;" rowspan="2">全选 <br><input type="checkbox" ng-model="selectAll"></th>
                            <th style="text-align: center;  50px;vertical-align: middle" rowspan="2">序号</th>
                            <th style="text-align: center;  150px;vertical-align: middle" rowspan="2">名称</th>
                            <th style="text-align: center;  150px;vertical-align: middle" rowspan="2">日期</th>
                            <th style="text-align: center;  150px;" colspan="3">比赛队伍(红)</th>
                            <th style="text-align: center;  150px;" colspan="3">比赛队伍(蓝)</th>
                            <th style="text-align: center;  150px;vertical-align: middle" rowspan="2">比分</th>
                            <th style="text-align: center;  150px;vertical-align: middle" rowspan="2">说明</th>
                            <th style="text-align: center;  150px;vertical-align: middle" rowspan="2">玩家支持队伍</th>
                        </tr>
                        <tr>
                            <th style="text-align: center;  80px;">第一场</th>
                            <th style="text-align: center;  80px;">第二场</th>
                            <th style="text-align: center;  80px;">说明</th>
                            <th style="text-align: center;  80px;">第一场</th>
                            <th style="text-align: center;  80px;">第二场</th>
                            <th style="text-align: center;  80px;">说明</th>
                        </tr>
                        </thead>
    <tbody ng-click="fun()" id="page" ng-show="isshow">
                        <!--track by tb.id-->
                            <tr ng-repeat="tb in saveDate"><!-- 只用angularjs实现点击一行就选中全行暂时无法实现 -->
                                <td style=" 20px;"><input type="checkbox" ng-checked="selectAll"></td>
                                <td style="text-align:center;">{{tb.id}}</td>
                                <td style="text-align:center;">{{tb.zbname}}</td>
                                <td style="text-align:center;">{{tb.zbtime}}</td>
                                <td style="text-align:center;">{{tb.zbrul1}}</td>
                                <td style="text-align:center;">{{tb.zbrul2}}</td>
                                <td style="text-align:center;"><div class="text" contenteditable="true" ng-model="tb.por"></div></td>
                                <td style="text-align:center;">{{tb.zbrul2}}</td>
                                <td style="text-align:center;">{{tb.zbrul1}}</td>
                                <td style="text-align:center;"><div class="text" contenteditable="true" ng-model="tb.por"></div></td><!-- 2016.1.19通过可编译的div来代替输入框 -->
                                <td style="text-align:center;">{{tb.score}}</td>
                                <td style="text-align:center;"><div class="text" contenteditable="true" ng-model="tb.por"></div></td>
                                <td>
                                    <select name="" id="" ng-change="changetype(adds)" ng-model="adds" style="text-align:center;100%;min-80px;margin-bottom:0">
                                        <option value="" ng-show="isShow">{{tb.type}}</option>
                                        <option value="支持红方">支持红方</option>
                                        <option value="支持蓝方">支持蓝方</option>
                                        <option value="双方相同">双方相同</option>
                                    </select>
                                </td>
                            </tr>
                        </tbody>
                    </table>

    JS部分:备注所有的script部分的代码都写在angular.module("myModule",[]).controller('myCtrl', function($scope) {写在这里}中

    $scope.isshow=true;
    //
    模仿请求得到的数据
    $scope.saveDate=[{ id:1,zbname:"中亚赛区比赛",zbtime:"2015-12-03",zbrul1:"胜利",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"支持红方"},
    { id:
    2,zbname:"日韩赛区比赛",zbtime:"2015-11-11",zbrul1:"胜利",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"支持蓝方"},
    { id:
    3,zbname:"欧美赛区比赛",zbtime:"2015-3-03",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"双方相同"},
    { id:
    4,zbname:"中东赛区比赛",zbtime:"2016-1-05",zbrul1:"胜利",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"支持蓝方"},
    { id:
    5,zbname:"北京赛区比赛",zbtime:"2014-12-23",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"双方相同"},
    { id:
    6,zbname:"韩国赛区比赛",zbtime:"2015-11-01",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"双方相同"},
    { id:
    7,zbname:"日本赛区比赛",zbtime:"2011-1-23",zbrul1:"胜利",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"支持红方"},
    { id:
    8,zbname:"中亚赛区比赛",zbtime:"2013-12-15",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"支持蓝方"},
    { id:
    9,zbname:"中亚赛区比赛",zbtime:"2015-10-17",zbrul1:"失败",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"支持红方"},
    { id:
    10,zbname:"中亚赛区比赛",zbtime:"2015-11-21",zbrul1:"胜利",zbrul2:"胜利",por:"请输入说明内容",score:"2:1",type:"支持蓝方"},
    { id:
    11,zbname:"中亚赛区比赛",zbtime:"2015-2-02",zbrul1:"失败",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"支持红方"},
    { id:
    12,zbname:"中亚赛区比赛",zbtime:"2015-2-05",zbrul1:"胜利",zbrul2:"失败",por:"请输入说明内容",score:"2:1",type:"双方相同"}
    ];
    // var arr=[];//用于分别绑定ngrepeat中生成的各条数据信息
  • 相关阅读:
    【知识强化】第五章 中央处理器 5.3 数据通路的功能和基本结构
    【知识强化】第五章 中央处理器 5.5 指令流水线
    【知识强化】第五章 中央处理器 5.4 控制器的功能和工作原理
    【知识强化】第二章 数据的表示和运算 2.4 算术逻辑单元ALU
    【知识强化】第二章 数据的表示和运算 2.3 浮点数的表示与运算
    【知识强化】第五章 中央处理器 5.2 指令执行过程
    【知识强化】第七章 输入/输出系统 7.3 I/O接口
    【知识强化】第七章 输入/输出系统 7.2 外部设备
    【知识强化】第三章 存储系统 3.7 虚拟存储器
    【知识强化】第七章 输入/输出系统 7.1 I/O系统基本概念
  • 原文地址:https://www.cnblogs.com/weblv/p/5146835.html
Copyright © 2011-2022 走看看