2012-12-21 8 views
6

Ich habe eine ASP.NET MVC 4-Ansicht, die dynamisch lädt zwei verschachtelte Teiltags in <div> Elemente über JQuery AJAX-Aufrufe. Jedes der Teiltöne hat einen ziemlich großen eigenen Javascript-Stapel. Um alles zum Laufen zu bringen, ich habe zur Zeit alle JavaScript in den success jeden Anruf AJAX:Javascript und MVC4 Teilansichten geladen mit AJAX

function LoadPartial(someImportantId) { 
    $.ajax({ 
     url: '@Url.Action("LoadThePartial")' + '?id=' + someImportantId, 
     type: 'POST', 
     async: false, 
     success: function (result) { 
      $("#partialContainerDiv").html(result); 
      //here there be great piles of javascript 
     } 
    }); 
} 

Da zwei dieser partials sind und jeder erfordert Hunderte von Zeilen Javascript, die Hauptansicht Datei wird immer schwer zu verwalten. Ich würde diesen Script-Code gerne in eine separate .js-Datei schreiben, aber ich bin immer noch neu genug für Javascript, dass ich mich stark auf die Skript-Debugging-Tools von Chrome stütze, und ich habe Probleme herauszufinden, wie (und wenn) Ich kann diese Skriptdatei laden. Ich habe versucht:

No script in debugger

  • ein Skript enthalten, um die Hauptansicht Hinzufügen. Dies funktioniert nicht. None des Partials ist Javascript korrekt angehängt, was auf eine Synchronisationsebene sinnvoll macht.

Stuff does not work

Gibt es eine Möglichkeit, dass ich eine separate Javascript-Datei für eine AJAX haben kann teilweise und nach wie vor in der Lage geladen auf dem Client die teilweise zu debuggen? Noch wichtiger, wo stelle ich all dieses Javascript für AJAX geladene Teilansichten bereit?

Antwort

5

Wrappen Sie die Skripte für Ihre Partial in einer Funktion auf der Hauptseite; Rufen Sie die Funktion im AJAX-Success-Handler auf und führen Sie die Skripte aus, nachdem Ihre Partials geladen wurden.

+0

Gibt es eine Möglichkeit, die Funktionen in eine separate Skriptdatei zu legen? –

+0

Ja; Im Wesentlichen würden Sie Ihre gesamte _DiagnosticAssessment.js_ Datei in eine benannte Funktion einschließen und dann diese Funktion mit dem Namen aufrufen, um den Code _execute_ einmal fertig zu machen. – Mathletics

+1

Leider habe ich eine Menge Rasiersyntax-Aufrufe (wie '@ Url.Action()') in meinem Javascript. Zum Glück kann ich das mit Hilfe von http://stackoverflow.com/q/4624626/27457 beheben. Vielen Dank! –

Verwandte Themen