Не работал с angular, но попробуйте в html
ng-change="vm.coluVisi()"
заменить на
ng-change="vm.coluVisi($event)"
, и слушатель изменить на:
function coluVisi($event) {
var target = $event.currentTarget;
// Get the column API object
var col = vm.dtInstance.DataTable.column(target.dataset.column);
// Toggle the visibility
col.visible(!col.visible());
}
Ну и откровенно говоря не понимаю, почему вы слушателю сразу не можете передавать номер колонки, если у вас data-атрибут все равно руками заполняется.