2010-05-11 5 views
0

Est-ce un code de pointeur de fonction valide ci-dessous,pointeurs de fonction en utilisant JavaScript django

Dans les vues,

def change(request): 
     dict={} 
     function_ptr="create()" 

     dict.update({'function_ptr' : function_ptr}) 
     return render_to_response('mpjt/create.html',context_instance=RequestContext(request,{'dict': dict})) 

Dans create.html

 $(document).ready(function() { 
    var a = '{{dict.function_ptr}}' 

    func_ptr(a); 

     function create() 
    { 
     alert('got respponse'); 
     } 
    }); 

Merci ..

Répondre

1

No.

Passez function_ptr='create' dans votre code python et utiliser les éléments suivants dans votre JavaScript:

var func_ptr = window[{{ dict.function_ptr }}]; 

Cela doit être fait après la fonction create() a été défini! Si vous voulez le faire plus tôt, vous pouvez le faire avec une fonction anonyme:

var func_ptr = function() { 
    return window[{{ dict.function_ptr }}]; 
} 
+0

Can u s'il vous plaît expliquer comment est-il différent? – Hulk

+0

window ['funcname'] est la manière correcte d'obtenir le pointeur de fonction à partir d'une chaîne. Une chaîne contenant 'funcname' ou 'funcname()' est juste une chaîne normale - pas une fonction (pointeur). Et pendant que vous pourriez exécuter 'funcname()' avec eval() c'est très sale ("eval is evil") – ThiefMaster

+0

Celui qui l'a downvoted: Qu'en est-il un commentaire? Il est assez impoli de downvote une bonne réponse sans mentionner une raison. – ThiefMaster

Questions connexes