Forcer AngularJS à utiliser la version spécifique de jQuery tout en utilisant plusieurs versions de jQuery à la fois

J'ai hérité du projet où plusieurs versions de jQuery sont chargées dans la page en mode NoConflict. L'application est énorme, les tests sont manquants et il semble que tout ancien développeur n'ait pas «cohablé» suffisamment grand pour supprimer la bibliothèque précédente. Donc, le résultat est que $ se réfère à jquery version 1.4.2.
Y a-t-il un moyen / truc de dire à quel point la version jQuery devrait-elle être utilisée? Quelque chose comme

Angular.jq = j182

Je sais que je peux le faire comme

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script src="xxx/scripts/angular.js"></script> <script>j182 = jQuery.noConflict();</script> 

Mais alors j'ai une sorte de "dépendance cachée" que je voudrais éviter.

Vous avez raison que $.noConflict() vous permet de jouer avec 2 versions de jQuery à la fois (ce qui devrait être évité à moins que REALMENT nécessaire).

Pour que votre module angulaire utilise la version que vous voulez, vous pouvez utiliser ng-jq="whateverYouCallIt"whateverYouCallIt ng-jq="whateverYouCallIt" est variable dans la window . Exemple:

 <script type="text/javascript" src="/js/jquery-1.9.0.min.js"></script> <script type="text/javascript">window.j190 = jQuery.noConflict();</script> <script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script> <script type="text/javascript"> console.log('globally available jQuery: ' + jQuery.fn.jquery); console.log('j190: ' + window.j190.fn.jquery); </script> ... <div ng-app='myApp' ng-jq="j190" ng-controller='MyController' id="myAngularApp"> 

Il suffit de faire attention, car si vous devez accéder $scope de $scope d'un autre endroit, vous devrez l'obtenir via le même jQuery spécifié dans ng-jq :

 var myAnguarAppScope = window.j190('#myAngularApp').scope(); 

BTW, la sortie de appels console.log ci-dessus:

JQuery disponible à l'échelle mondiale: 1.7.2
J190: 1.9.0