2016-04-11 4 views
0

adamlar yapıcı işlevlere yönelik nesneleri çağıran ben kukla soru olduğunu biliyorum ama çok ve asla ulaşamadı çalıştı .. Buradajavascript

<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(); 

       } 
      }); 
     }); 
     } 

ve JS

yılında

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 }}
jsp benim kodudur

i jsp içinde deletefunction erişebilir ve js kullanmak istiyorum .. ama em kimliği jsp tanımlanmayan verir .. herhangi bir öneri ??

+0

Hangi parametrelerin geçtiğine bakın ve bildirilenler ... –

+0

Ardından, işlevi çağırmanız gerekmiyor, bir işlev çağrısının sonucu değil… –

+0

ve ne yapıyorum .. deleteDep kullanıyorum –

cevap

0

Bunu çok karmaşık ve yanlış yapıyorsunuz.

Doğru bu satırı:

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

için:

gridDep = new GridLibraryDep(newData, deleteDep); 

Ve yapıcı:

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

için:

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

Şimdi bildirilen ve iletilen parametreler eşleşti ve işlev işlev çağrısı sonucu yerine getirildi.

+0

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

+0

@yomnaesam daha sonra kurucuyu '' GridLibraryDep (obj) 'işlevine değiştirmelisiniz { this.data = obj.data; this.deletefunction = obj.deletefunction; } 've kaldır '(id)' 'gridDep = yeni GridLibraryDep ({data: newData, deletefunction: deleteDep})' –

+0

ve dinlenme kodu aynı olacak mı? –