如何在smart-table中获取当前排序列

3

我在我的智能表格中使用了st-sort指令来对所有列进行排序。当用户点击某一列时,如何获取当前排序的列?有什么技巧还是必须监听这些列标题的点击事件?

2个回答

4
你可以使用指令st-pipe,在排序、分页或筛选事件中将调用此函数。
<table st-table="displayedCollection" st-safe-src="rowCollection" st-pipe="customPipe">

$scope.customPipe = function(tableState){
   console.log(tableState.sort);
}

一个问题。customPipe函数在我的情况下被成功调用。但是集合没有显示在我的智能表中。当我删除st-pipe时,我可以看到这个集合。 - yalkris
我为我的st-pipe显示问题创建了一个单独的问题。http://stackoverflow.com/questions/34161735/st-pipe-causing-display-issue - yalkris

2
我认为最好的控制技术是创建一个插件来监视表格状态的变化,当检测到变化时调用提供的回调函数(在您的情况下,特别关注表格状态的“sort”命名空间)。

module.directive('stSentinel',function (){
   return{
      require:'^stTable',
      scope:{
        onChange:'&stSentinel'
      },
      link:function(scope, element, attr, stTable){
        scope.$watch(function(){
          return stTable.tableState();
        },function (newVal){
          scope.onChange(newVal);
        },
        true)}
     }
   };
});

你可以在你的标记中使用它。

<table st-table="foo" st-sentinel="myCtrl.applyChange(tableState)"> ... </table>

您的控制器将定义applyChange方法来响应更改。


我的ctrl函数出现错误,提示tableState未定义。"TypeError: Cannot read property 'sort' of undefined"。 - yalkris
将 scope.onChange({tableState: newVal}) 改为作用域变量,代码将正常工作。 - Tuan Hoang Anh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接