rows.add(array).draw() is getting called multiple times

rows.add(array).draw() is getting called multiple times

cam13cam13 Posts: 1Questions: 1Answers: 0
edited September 2015 in Free community support

I have done this to create number of columns based on the data my server returns back. I want to check if the data in the array matches the column name, if it does then return yes else return no.

function initTable(userJvmsArray) {
            var collumnsCallbacks = [{
                title: "Username",
                data: "username"
            }];

            for (var i = 0; i < $scope.unique.length; i++) {
                $('#nameColumn').after('<th>' + $scope.unique[i] + '</th>');
                var jvm = $scope.unique[i];
                var col = {
                    title: jvm,
                    data: function(data, type, row) {
                        var data2 = data;
                        var jvms = $scope.unique;
                        for (var k = 1; k < jvms.length; k++) {
                            console.log(jvms);
                            for (var j = 0; j < data2.myarray.length; j++) {
                                if (table.column(k).title() == data2.myarray[j].Name) {
                                    console.log(table.column(k).title() + " = " + data2.myarray[j].Name + " YES");
                                    return "yes";
                                } else {
                                console.log(table.column(k).title() + " = " + data2.myarray[j].Name + " NO");
                                    return "no";
                                }
                            }
                        }


                    }
                };
                collumnsCallbacks.push(col);
                $scope.columns = collumnsCallbacks;
            }
            $scope.myTable = $('#myTable').DataTable({
                'paging': true,
                "pageLength": 3,
                'columns': collumnsCallbacks
            });

Problem is that the function seems to run more than once and populating the table incorrectly:

["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user1: myword = myword YES myctrl.controller.js:66
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user1: myword = myword YES myctrl.controller.js:66
    
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user11: myword = secondword NO myctrl.controller.js:69
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user11: myword = secondword NO myctrl.controller.js:69
    
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user1: myword = myword YES myctrl.controller.js:66
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user11: myword = secondword NO myctrl.controller.js:69
    
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user1: myword = myword YES myctrl.controller.js:66
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user11: myword = secondword NO myctrl.controller.js:69
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user1: myword = myword YES myctrl.controller.js:66
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user1: myword = myword YES myctrl.controller.js:66
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user11: myword = secondword NO myctrl.controller.js:69
    ["myword", "secondword", fastLoop: function, fastLoopAsc: function] myctrl.controller.js:63
    user11: myword = secondword NO 
This discussion has been closed.