【问题标题】:Angularjs Custom Directive for table creation用于表创建的 Angularjs 自定义指令
【发布时间】:2016-12-24 09:05:43
【问题描述】:

我想创建一个可以在许多页面中使用的 angularjs 指令,该指令应该处理 html 表的创建,它可以根据页面的要求有不同的列。编写此指令的起点应该是什么,用户我们可以在不同的页面中有不同的列,但只有一个指令。

示例可以是主页

 <table>
      <tr>
        <th>Firstname</th>
        <th>Lastname</th> 
        <th>Age</th>
      </tr>
      <tr>
        <td>Jill</td>
        <td>Smith</td> 
        <td>50</td>
      </tr>
      <tr>
        <td>Eve</td>
        <td>Jackson</td> 
        <td>94</td>
      </tr>
    </table>

关于页面

<table style="width:100%">
  <tr>
    <th>Company</th>
    <th>Address</th> 
    <th>City</th>
  </tr>
  <tr>
    <td>Jill</td>
    <td>Smith</td> 
    <td>50</td>
  </tr>
  <tr>
    <td>Eve</td>
    <td>Jackson</td> 
    <td>94</td>
  </tr>
</table>

【问题讨论】:

标签: html angularjs angularjs-directive


【解决方案1】:
var tableDirective = function(){
    return {
       restrict: 'EA', //E = element, A = attribute, C = class, M = comment         
        scope: {
            data: '='         
            },
            templateUrl: 'table-directive.html',
        }
};

angular.module('myModule').directive('tableDirective', tableDirective);

table-directive.html:

<table style="width:100%">
  <tr>
    <th ng-repeat="item in data.headList">{{ item.name }}</th>
  </tr>
  <tr ng-repeat="item in data.rowList">
    <td>{{ item.name }}</td>
    <td>{{ item.surname }}</td> 
    <td>{{ item.propertyName }}</td>
  </tr>
</table>

然后,您可以使用指令并传递数据:

<table-directive data="data"></table-directive>

这里data来自控制器:

...
$scope.data = {
   headList: [{ name: 'Company' }, { name: 'Address' }, { name: 'City' }],
   rowList: // here will be your data
}
...

【讨论】:

  • 在不同的页面中有多个表格,并且几个页面将在表格的同一单元格中具有文本和文本框,但其他表格不会有,一个表格将在同一单元格中具有文本和图标因此表格单元格的行为相对于页面和表格标题的变化与我们在 $scope.data 中得到的不同,所以我想知道我们是否可以使用一个 Angular js 自定义指令来实现这种自定义。
  • @zumuhu,我明白了
  • 你会建议/建议我最后一个问题吗:“不同页面中有多个表格,几个页面将在表格的同一单元格中有文本和文本框,但其他表格不会有,一个表格将在行的同一单元格中包含文本和图标,因此表格单元格的行为相对于页面和表格标题的变化与我们在 $scope.data 中得到的不同,所以我想知道我们是否可以实现这种自定义使用一个 Angular js 自定义指令。"
猜你喜欢
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 2017-05-20
  • 1970-01-01
  • 2015-03-17
  • 2015-06-21
相关资源
最近更新 更多