Jquery 表中的列-角度JS
我已经在angular js中创建了一个应用程序,用于使用angular js生成列和行表,以及使用插件对表进行排序。 该应用程序工作正常,但问题是,在该应用程序中,有四列是根据用户的首选项显示的,例如,在最初显示表后,排序工作正常,但当对列进行更改时,排序不适用于新列 在下面的代码中,我制作了一个关于此应用程序的模拟演示。最初,排序工作正常,但当单击changeDisplay按钮并显示新的两列时,排序未应用于这些新列(服务一、服务二) 谁能告诉我一些解决方法吗 htmlJquery 表中的列-角度JS,jquery,angularjs,sorting,tablesorter,Jquery,Angularjs,Sorting,Tablesorter,我已经在angular js中创建了一个应用程序,用于使用angular js生成列和行表,以及使用插件对表进行排序。 该应用程序工作正常,但问题是,在该应用程序中,有四列是根据用户的首选项显示的,例如,在最初显示表后,排序工作正常,但当对列进行更改时,排序不适用于新列 在下面的代码中,我制作了一个关于此应用程序的模拟演示。最初,排序工作正常,但当单击changeDisplay按钮并显示新的两列时,排序未应用于这些新列(服务一、服务二) 谁能告诉我一些解决方法吗 html <div ng
<div ng-controller="Controller">
<table border="1" id="mytable">
<thead>
<tr>
<th>Work Name</th>
<th>Team Name</th>
<th>Place Name</th>
<th ng-repeat="servopt in services|filter:{ display: 'block' }|orderBy:'order'">{{servopt.servicename}}</th>
<th>Leader Name</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="val in datas">
<td>{{val.workname}}</td>
<td>{{val.teamname}}</td>
<td>{{val.placename}}</td>
<td ng-repeat="servopt in services|filter:{ display: 'block' }|orderBy:'order'">{{val[servopt.serviceid]}}</td>
<td>{{val.leadername}}</td>
</tr>
</tbody>
</table>
<button ng-click="changeDisplay()">changeDisplay</button>
</div>
工作名称
队名
地名
{{servopt.servicename}
领导姓名
{{val.workname}}
{{val.teamname}}
{{val.placename}}
{{val[servopt.serviceid]}
{{val.leadername}
变化显示
问题在于tablesorter插件确实如此。换句话说,即使删除所有Angle代码并尝试为表创建新列并刷新trablesorter,它也不会起作用
在这种情况下,您需要寻找一个替代插件,或者可能是一个仅角度的解决方案()
第二点是:
不要使用控制器来:
- 操纵DOM-控制器应仅包含业务逻辑。 将任何表示逻辑放入控制器会显著影响 它的可测试性。Angular为大多数情况和指令提供数据绑定 封装手动DOM操作
updateAll
事件,但需要等待Angular digest运行并更新DOM,因此需要setTimeout
您仍然应该将所有与DOM相关的逻辑移到一个指令中。使用表排序器的fork,您可以在任何列数据发生更改后触发重新初始化表排序器()
现在我对angular js一无所知,因此如果在回调内部执行上述代码,而不是在
setTimeout
函数内部执行,则会更好地工作。@Mottie是对的,这个事件似乎让您能够更新组件。在这种情况下,您要做的是将此逻辑移动到指令。
setTimeout(function(){
// updateAll include the header in the update
$('#mytable').trigger('updateAll');
}, 100);