mro*_*rok 5 javascript jquery versions multiple-instances angularjs
我继承了在noConflict模式下将几个版本的jQuery加载到页面中的项目.应用程序是巨大的,测试缺失,似乎每个前devloper没有"cohones"大到足以删除以前的库.结果是$引用了jquery版本1.4.2.
是否有任何方式/技巧可以告诉角度应该使用jQuery版本? 就像是
angular.jq = j182
我知道我可以这样做
<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>
Run Code Online (Sandbox Code Playgroud)
但后来我有一种"隐藏的依赖",我想避免.
你是对的,它$.noConflict()允许你同时使用 2 个版本的 jQuery(除非真的有必要,否则应该避免)。
要使您的 Angular 模块使用您想要的版本,您可以使用ng-jq="whateverYouCallIt"where whateverYouCallItis 变量 in window。例子:
<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">
Run Code Online (Sandbox Code Playgroud)
请小心,因为如果您需要$scope从其他地方访问,则必须通过以下中指定的相同 jQuery 来获取它ng-jq:
var myAnguarAppScope = window.j190('#myAngularApp').scope();
Run Code Online (Sandbox Code Playgroud)
顺便说一句,上面的console.log调用输出:
全局可用 jQuery:1.7.2
j190:1.9.0
| 归档时间: |
|
| 查看次数: |
1034 次 |
| 最近记录: |