jQuery和AngularJS没有合作

时间:2012-09-19 14:26:54

标签: javascript jquery jquery-ui requirejs angularjs

我正在使用RequireJS和Angular,但他们在我的设置中没有合作。当jQuery版本是1.7.2时,事情很好。但是我想使用jQuery 1.8.1和jQuery UI和角度应用程序甚至无法使用此初始化我的主模块。

问题在于:

区分大小写的变量:jQuery和jquery。在jquery 1.8.1源代码中,最后他们定义了window.jQuery。在早期版本1.7.2中定义了window.jquery。

因为我想在我的应用程序中使用jQuery UI包含文件jquery-ui-1.8.23.custom.min.js。包含它之后我得到了“jQuery”未定义的错误。

所以,我决定升级我的jQuery版本并下载了所说的1.8.1版本。接近jQuery源代码的末尾,我可以看到这个版本定义了window.jQuery(jQuery UI需要的正确大小写)。

我使用James Burke github项目的最新版本更新了我的require-jquery JS,并使用jquery 1.8.1更新了它。

但是包括更新的jQuery / RequireJS项目,angularjs已停止工作。

我在Chrome控制台中收到此错误:

Console Output

如果我恢复到1.7.2角度工作。或者,如果我编辑jQuery文件来定义window.jquery而不是window.jQuery(注意案例)它再次起作用。但这意味着jQuery UI不会。

2 个答案:

答案 0 :(得分:17)

使用jQuery的noConflict方法是解决此问题的更优雅且面向未来的解决方案。

查看有关http://api.jquery.com/jQuery.noConflict/

的大量文档

更新(链接中的示例):

<script>
$.noConflict();
jQuery( document ).ready(function( $ ) {
  // Code that uses jQuery's $ can follow here.
});
// Code that uses other library's $ can follow here.
</script>

答案 1 :(得分:1)

在我的两天尝试后轻松解决这个问题..

尝试时

直接将特定的Slider Jquery文件包含到view.html中。从index.html文件中删除jquery