Angularjs数据表 - rowCallback事件

时间:2017-06-19 12:45:24

标签: javascript angularjs angular-datatables

有人可以帮我解决rowCallback问题。问题是,我有一张桌子,您可以点击表格行的任意位置以获取所点击项目的打开信息。在第一个TD我设置复选框。但是当我选中复选框时,我不想打开信息。 这是图像以便更好地解释 enter image description here

我的代码

git reset --hard

1 个答案:

答案 0 :(得分:3)

我自己有这个问题。我认为你的做法有点倒退。您在td中声明rowCallback点击处理程序,只是为了能够传递ID。相反,我会推荐这个:

  1. no-click类添加到第一列以防止点击:

    DTColumnBuilder.newColumn(null).withTitle(titleHtml).notSortable()
      .withClass('no-click')
      .renderWith(function(data, type, full, meta) {
         vm.selected[full.id] = false;
         return '<input type="checkbox" ng-model="showCase.selected[' + data.id + ']" ng-click="showCase.toggleOne(showCase.selected)">';
       }), 
    
  2. 更改rowCallback除了将id属性注入该行外,不做任何事情:

    function rowCallback(nRow, aData, iDisplayIndex, iDisplayIndexFull) {
       $(nRow).attr('data-id', aData.id);
    }
    
  3. td上创建委派事件处理程序,以替换rowCallback内的事件处理程序和someClickHandler()

    $('#tableid').on('click', 'tbody td:not(.no-click)', function() {
      var id = $(this).parent().attr('data-id');
      vm.message = id;
      $location.path('info/' + id);
    })