未捕获的TypeError:无法读取未定义的属性“行”在angular js中不起作用

时间:2019-01-15 13:40:40

标签: javascript jquery datatables row

我想要读取datatable中的row值,因为我实现了类似的东西。

$('#entry-grid').on('click', '.check', function () {
        var row = $(this).closest("tr");            
        var data = $scope.dtInstance.DataTable.row.data();
        alert(data);
    })   

下面是我的桌子

<table id="entry-grid" datatable="" dtinstance="dtInstanceCallback" dt-options="dtOptions" dt-columns="dtColumns" class="table table-hover"></table>

但是在调试时我得到了错误

  

未捕获的TypeError:无法读取未定义的属性“行”

不知道为什么会给出错误

更新

这是我更新的Augugal代码,我正在尝试解决,但不是。

var app = angular.module('MyApp', ['datatables']);
app.controller('homeCtrl', ['$scope', '$http', 'DTOptionsBuilder', 'DTColumnBuilder',
    function ($scope, $http, DTOptionsBuilder, DTColumnBuilder) {
        $scope.dtColumns = [
            DTColumnBuilder.newColumn(null, '').renderWith(function(data, type, full) {
                return '<input type="checkbox" class="check" data-object-id="'+full.objectid+'">'
            }),
            DTColumnBuilder.newColumn("OBJECTID", "ID"),
            DTColumnBuilder.newColumn("SERVICE_CODE", "Service Code"),
            DTColumnBuilder.newColumn("COND1", "Condition 1"),
            DTColumnBuilder.newColumn("COND2", "Condition 2"),
            DTColumnBuilder.newColumn("COND3", "Condition 3"),
            DTColumnBuilder.newColumn("SERVICE_TYPE", "Service type"),
            DTColumnBuilder.newColumn("REMARK", "Remark"),
            DTColumnBuilder.newColumn("DESCRIPTION", "Description")
        ]
        $scope.dtOptions = DTOptionsBuilder.newOptions().withOption('ajax', {
            url: "/home/getdata",
            type: "POST"
        })
        .withPaginationType('full_numbers')
        .withDisplayLength(10);

        $scope.dtInstance = {};
        $scope.dtIntanceCallback = function (instance) {
            $scope.dtInstance = instance;            
        }
        $scope.dtRebind = function () {
            $scope.dtInstance.DataTable.draw()
        }

        $('#entry-grid').on('click', '.check', function () {
            var row = $(this).closest("tr");
            var data = $scope.dtInstance.DataTable.row().data(); // here is the error of row undefined            
        })        
    }])

1 个答案:

答案 0 :(得分:1)

如果我没记错的话,正确使用的指令应该是dt-instance而不是dtinstance,因为您使用的是$scope.dtInstance驼峰式的访问方式,因此等效指令将被烤肉包住。

<table id="entry-grid" datatable="" dt-instance="dtInstanceCallback" dt-options="dtOptions" dt-columns="dtColumns" class="table table-hover"></table>