/ / Variable globale Javascript lors de l'utilisation de Scripts.Render MVC4 - javascript, asp.net-mvc-4, variables globales, rendu

Variable globale Javascript lors de l'utilisation de Scripts.Render MVC4 - javascript, asp.net-mvc-4, variables globales, rendu

J'ai un projet MVC 4 qui utilise l'intégration de javascript.

Dans mon _Layout.cshtml page j'ai quelque chose comme ça:

    @Scripts.Render("~/bundles/scripts/desktop/modernizr",
"~/bundles/scripts/desktop/jquery","~/bundles/scripts/desktop/jqueryui",
"~/bundles/scripts/desktop/jqueryvalidation", "~/bundles/scripts/custom")

Il y en a d'autres, mais ce n'est qu'un exemple. Dans un de mes scripts appelé dans le script personnalisé, je dois référencer une variable globale définie dans la fonction ready, comme indiqué ci-dessous:

  <script type="text/javascript">
$(function () {
//alert("Page is ready!");
var warning = 10;
var timeout = 20;   }); </script>

Le problème est que je semble toujours avoir une erreur dansla méthode qui nécessite les variables d'avertissement et de délai d'attente. Est-ce que je manque quelque chose d'évident (pas pour moi, cependant!) Sur la façon dont je devrais créer ces variables? Devrais-je var les en dehors de la $Ready, parce que le js se charge avant que la page soit prête techniquement?

Où la variable globale doit-elle aller, si tout est déjà dans un ensemble de rendu et qu'il n'y a pas de blocs de script?

Merci!

Réponses:

4 pour la réponse № 1

le warning et timeout Les variables ne sont pas "globales". Elles "n'ont été définies que dans la fonction que vous fournissez au $ fonction.

Je recommande généralement d'éviter autant que possible les variables globales, mais si vous voulez vraiment créer des variables globales, utilisez ceci:

<script type="text/javascript">
var warning = 10;
var timeout = 20;
</script>

Ou ca:

<script type="text/javascript">
$(function () {
window.warning = 10;
window.timeout = 20;
});
</script>

0 pour la réponse № 2

Merci pour la réponse.

Je ne pense pas ajouter les variables dans le Readyla page fonctionnera. Les fonctions qui nécessitent ces variables sont chargées avant que la page soit "prête" (si je comprends bien comment tout cela fonctionne), il existe donc des situations sur une nouvelle page chargée où la variable sera requise mais non référencée.

Voici comment je le gère actuellement:

J'ai créé un nouveau fichier .js, avec les éléments suivants:

    var warning;
var timeout;

Ensuite, j'ai créé une référence de paquet au fichier etmettez-le dans mon @ Script.Render stmt dans le bon ordre pour la portée. Maintenant, j’ai mes variables globales et elles sont clairement implémentées dans mon code de vue. Maintenant, je sais que je devrais transmettre des variables plutôt que de les avoir globales, mais dans ce cas, je ne vois pas de problème majeur.