代码之家  ›  专栏  ›  技术社区  ›  hud

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

  •  0
  • hud  · 技术社区  · 5 年前

    datatable 为此,我实现了类似的东西。

    $('#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:无法读取未定义的属性“行”

    使现代化

    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 回复  |  直到 5 年前
        1
  •  1
  •   Ana Liza Pandac    5 年前

    dt-instance 而不是 dtinstance $scope.dtInstance 这是骆驼壳,所以等效的指令是烤羊肉串壳。

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