观看 getSelectedRows()

watch on getSelectedRows()

我在 angular 控制器中有一个带有复选框列的 grid,我想在其复选框单元格上设置一个 watch 单击,

为此,我使用 getSelectedRows() 来指示所选单元格的索引数组是否已更改。

这是代码 -

$scope.grid = new Slick.Grid(...)
$scope.$watch('$scope.grid.getSelectedRows()', function(newVal, oldVal){
     console.log(arguments);
});

但是当我打开任何这个网格复选框时 - 它不会进入观察器功能。

如何让它真正看到我的复选框点击?

这是正确的方法

 $scope.$watch(funstion(){ return $scope.grid.getSelectedRows() }, function(newVal, oldVal){

    console.log(arguments);
 });

但是由于 angular 的摘要周期,它变得晚了。您可以在 setTimeout 函数

中检查正确的值
$scope.$watch(funstion(){ return $scope.grid.getSelectedRows() }, function(newVal, oldVal){

    setTimeout(function(){
      var row = $scope.grid.getSelectedRows();
      //do your staff here
    },0)
 });

可能会更适合

grid.onSelectedRowsChanged.subscribe(function(e, args){
    $scope.$emit('selectedRowsChanged', *someData*);
});

$scope.$on('selectedRowsChanged', function(*someData*){
    _do your stuff here_
})