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

选中复选框时,始终使用角度JS获取警报中的第一行值

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

    我有一个 datatable 里面有很多记录。每一行由复选框组成。这里发生的事是,在任何一排我都要警惕 我总是得到数据表第一行的数据。

    下面是我的代码。

    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.dtInstanceCallback = 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();
                var strStringifyData = JSON.stringify(data);
    
                alert(strStringifyData);  //here its coming
    
            })
        }])

    请建议如何实施

    1 回复  |  直到 6 年前
        1
  •  1
  •   dganenco    6 年前

    我终于明白了。你可以使用 node as selector for row. 所以在你的案子里

    var selectedRow;
    $('#entry-grid').on('click', '.check', function () {
                                    if(selectedRow){
                        $(selectedRow).find('.check').prop('checked', false);                
                    }
    
                                selectedRow = $(this).closest("tr")[0]
                    var data = $scope.dtInstance.DataTable.row(selectedRow).data();
                    var strStringifyData = JSON.stringify(data);
    
                    alert(strStringifyData);  //here its coming
    
                })