2012-12-21 9 views
6

Mam widok ASP.NET MVC 4, który dynamicznie ładuje dwa zagnieżdżone części do elementów <div> poprzez wywołania JQuery AJAX. Każdy z elementów cząstkowych ma całkiem sporą ilość własnych skryptów JavaScript. Aby dostać to wszystko działa, obecnie mam cały JavaScript w success każdego wywołania AJAX:Widoki JavaScript i MVC4 częściowe załadowane z 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 
     } 
    }); 
} 

Ponieważ istnieją dwa z tych podszablonów i każdy wymaga setek linii JavaScript, główny plik widok jest coraz trudne do zarządzania. Chciałbym umieścić cały ten kod skryptu w osobnym pliku .js, ale wciąż jestem na tyle nowy, by JavaScript, który polegał głównie na narzędziach do debugowania skryptów Chrome i mam problem z ustaleniem, jak (i ​​czy) Mogę pobrać ten skrypt do załadowania. Próbowałem:

No script in debugger

  • Dodawanie skryptu należą do głównego widoku. To nie działa. Brak skryptu częściowego Javascript jest poprawny, co ma sens na poziomie synchronizacji .

Stuff does not work

Czy jest jakiś sposób, że mogę mieć oddzielny plik JavaScript AJAX załadowany częściowo i nadal mieć możliwość debugowania cząstkowe na kliencie? Co ważniejsze, gdzie umieścić wszystkie te JavaScript dla załadowanych widoków częściowych AJAX?

Odpowiedz

5

Zawijanie skryptów częściowego w funkcję zawartą na stronie głównej; wywołaj funkcję w procedurze obsługi powodzenia AJAX, wykonując skrypty po załadowaniu częściowych.

+0

Czy istnieje sposób, w jaki mogę umieścić funkcje w oddzielnym pliku skryptu? –

+0

Tak; w zasadzie owinąłbyś cały plik _DiagnosticAssessment.js_ w nazwaną funkcję, a następnie wywołaj tę funkcję po nazwie, aby _execute_ kod był gotowy. – Mathletics

+1

Niestety, mam wiele wywołań składni brzytwy (np. '@ Url.Action()') w moim Javascript. Na szczęście, myślę, że mogę temu zaradzić przy pomocy http://stackoverflow.com/q/4624626/27457. Dzięki! –

Powiązane problemy