2016-04-11 5 views
0

Jungs, ich weiß, es Dummy-Frage, aber ich versuchte viel und nie erreicht .. hier ist mein Code in jspObjekte von Funktionen im Konstruktor in Javascript aufrufen

<button type="button" onclick="loadDepartment();" id="dep">Departments</button> 
function deleteDep(id){ 
     $.ajax({ 
      url : '/Spring3HibernateApp1/deleteDep', 
      type : 'GET', 
      data : { 
       "id" : id, 
      }, 
      dataType : "json" 
     }); 
    } 

    function loadDepartment(){ 
     $(document).ready(function() { 
      $.ajax({ 
       url : '/Spring3HibernateApp1/indexDep', 
       type : 'GET', 
       error : function(that, e) { 
        alert(e); 
       }, 
       success : function(data) { 
        var newData = data.MyListDep; 
        gridDep = new GridLibraryDep({data: newData, deletefunction: deleteDep(id)}); 
        gridDep.display(); 

       } 
      }); 
     }); 
     } 

und in JS

function GridLibraryDep(data, deletefunction) { 
 
\t this.data = data.data; 
 
\t this.deletefunction = deletefunction.deletefunction(id); 
 
    } 
 

 
GridLibraryDep.prototype = { 
 
    deleteRow : function() { 
 
\t \t $("input:checkbox:checked").each(bindContext(function(index, item) { 
 
\t \t \t var str = $(item).attr("id"); 
 
\t \t \t str = str.substring(str.indexOf("_") + 1); 
 
\t \t \t var id = this.data[str][this.columns[1]]; 
 

 
\t \t \t this.deletefunction(id); 
 
\t \t \t 
 
\t \t \t this.data.splice(str, 1); 
 
\t \t \t this.deleteTable(); 
 
\t \t \t this.display(); 
 
\t \t }, this)); 
 

 
\t }}

i die deletefunction in jsp zugreifen möchten und es in js verwenden .. aber es gibt em-ID nicht in jsp definiert .. irgendwelche Vorschläge ??

+0

Schauen Sie, welche Parameter Sie übergeben und welche deklariert werden ... –

+0

Dann müssen Sie die Funktion übergeben, nicht das Ergebnis eines Funktionsaufrufs ... –

+0

und das ist was ich tue .. Ich benutze deleteDep (id) –

Antwort

0

Sie machen es zu kompliziert und falsch.

Correct diese Zeile:

gridDep = new GridLibraryDep({data: newData, deletefunction: deleteDep(id)}); 

zu:

gridDep = new GridLibraryDep(newData, deleteDep); 

Und Konstruktor:

function GridLibraryDep(data, deletefunction) { 
    this.data = data.data; 
    this.deletefunction = deletefunction.deletefunction(id); 
} 

zu:

function GridLibraryDep(data, deletefunction) { 
    this.data = data; 
    this.deletefunction = deletefunction; 
} 

Jetzt stimmen die deklarierten und übergebenen Parameter überein und die Funktion wird anstelle des Funktionsaufrufergebnisses übergeben.

+0

Was ist, wenn ich es so nennen möchte? GridDep = new GridLibraryDep ({data: newData, deletefunction: deleteDep (id)}); ?? –

+0

@Yomnaesam Dann müssen Sie den Konstruktor zu 'Funktion GridLibraryDep (Obj) { this.data = obj.data; this.deletefunction = obj.deletefunction; } 'und entfernen' (id) 'so' gridDep = neue GridLibraryDep ({data: newData, deletefunction: deleteDep}) ' –

+0

und der Restcode wird gleich sein ?? –

Verwandte Themen