AngularJS:ng-repeat中的nest指令,用于将smart-table与动态表字段一起使用

时间:2017-10-20 09:08:49

标签: javascript angularjs angularjs-ng-repeat smart-table

我正在尝试在我的新AngularJS应用中使用angular-smart-table作为网格。根据{{​​3}},要对列进行排序,我应该使用st-sort指令,如下所示:

<th st-sort="firstName">first name</th>
<th st-sort="lastName">last name</th>

但是,我正在尝试重新使用这段代码而不仅仅是一个表,所以我不知道表字段名称,直到运行时。我正在做类似下面的事情:

<script type="text/ng-template" id="content1">
  <div ng-repeat="table in $ctrl.tables">
    <h2>{{table._tableName}}</h2>
    <table st-table="table._data" class="table table-striped">
      <tr>
        <th ng-repeat="fieldName in table._fieldNames" st-sort="{{fieldName}}">{{fieldName}}</th>
      </tr>
      <tr ng-repeat="data in table._data">
        <td ng-repeat="fieldName in table._fieldNames">{{$ctrl.formatCell(table, data, fieldName)}}</td>
      </tr>
    </table>
  </div>
</script>

这不能正常工作(无法排序,其他功能正常)。我试过以下它不起作用,似乎st-sort必须在<th>标签中。

<th ng-repeat="fieldName in table._fieldNames"><span st-sort="{{fieldName}}">{{fieldName}}</span></th>

波纹管不起作用:

<tr>
  <span ng-repeat="fieldName in table._fieldNames">
    <th st-sort="{{fieldName}}">{{fieldName}}</th>
  </span>
</tr>

今天我尝试开发一个指令,并通过将restrict设置为“M”来解决上述问题,从而在评论中使用它。然后我遇到了一个新问题:我在这个应用程序中使用UI-Router而且我无法在我的指令中获取表内容,因为UI-Router状态具有隔离范围,它只支持控制器但不支持指令。作者可能认为支持指令不是必要的(在大多数情况下是的,但这种假设总是危险的。)

我正在尝试两种可能的方法:1。将字段名称放在会话/本地存储中以作为解决方案进行共享; 2.,放弃UI-Router。感谢任何提供更好解决方案的人。

0 个答案:

没有答案