我正在尝试在我的新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。感谢任何提供更好解决方案的人。