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

How to get current sorted column in smart-table

我的 smart-table 中的所有列都有 st-sort 指令。当用户单击特定列时,如何获取当前排序列?有什么技巧还是我必须听那些列上的点击事件 headers?

您可以使用指令 st-pipe,此函数将被调用以对事件进行排序、分页或过滤。

<table st-table="displayedCollection" st-safe-src="rowCollection" st-pipe="customPipe">

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

我认为可以为您提供最佳控制的技术是创建一个插件,该插件将监视 table 状态的变化,并在检测到变化时调用提供的回调(在您的情况下,您将特别注意 table state

的 "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 方法来响应更改