Mam projekt ASP.NET-MVC i mam ten kod siedzi w jednym z widoków:

<script type="text/javascript">

   $(document).ready(function () {

        var locations = <%= new JavaScriptSerializer().Serialize(Model.LocationArray) %>;

Chcę przenieść ten kod w osobnym pliku JS (z powodów, które nie są istotne do tego pytania), ale zdaję sobie sprawę, że nie mogę z powodu kodu siedzącego między <%%>

Jakieś sugestie dotyczące, jak mogę "wstrzyknąć" to w osobnym pliku JS?

-1
leora 26 listopad 2013, 20:53

3 odpowiedzi

Najlepsza odpowiedź

Możesz zdecydowanie uzyskać dostęp do tej zmiennej w innym pliku JavaScript. Wolę prefiksu zmienną z g, wskazując, że jest zmienną globalną. Zwróć uwagę na kolejność ładowania JavaScript.

<Script type="text/javascript">
$(function(){    
  var gLocation=<%= new JavaScriptSerializer().Serialize(Model.LocationArray) %>;  
});
</script>
<script src="scriptWhichUseThisVariable.js"></script>

Możesz także przekazać tę zmienną do funkcji zapisanych w zewnętrznym pliku JavaScript.

$(function(){   
  var gLocation=<%= new JavaScriptSerializer().Serialize(Model.LocationArray) %>;
  MyFunctionInCustomJSFile(gLocation);
});

Upewnij się, że załadujesz plik JavaScript, który ma funkcję MyFunctionInCustomJSFile zdefiniowaną w niej. Upewnij się również, aby uzyskać dostęp do niego w bloku kodu, który wykonuje po powyższym kodzie wykończenia wykonanie.

1
Shyju 26 listopad 2013, 16:56

Ustaw wartość locations w lokalnym pliku przed uruchomieniem zewnętrznego pliku. Ponieważ wartość jest zaludniona ze stronami serwera, nie potrzebujesz go zagnieżdżony w .ready().

0
Mathletics 26 listopad 2013, 16:56

Jeśli jest to dane i nie, jedna opcja jest załadowanie go przez AJAX w czasie wykonywania.

0
Diodeus - James MacFarlane 26 listopad 2013, 16:56