首页 > 解决方案 > 未捕获的类型错误:无法读取未定义的属性“行”在角度 js 中不起作用

问题描述

我想读取 a 中行的值,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>

但是在调试时我收到错误

未捕获的类型错误:无法读取未定义的属性“行”

不知道为什么它给出错误

更新

这是我更新的 anuglar 代码,我正在尝试解决它,但事实并非如此。

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            
        })        
    }])

标签: javascriptjquerydatatablesrow

解决方案


如果我没记错的话,应该使用正确的指令,dt-instance而不是dtinstance因为你正在访问它,因为$scope.dtInstance它是骆驼大小写的,所以等效的指令将是烤肉串大小写的。

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

推荐阅读