将Angular JQLite导出为$/jQuery

cyb*_*bat 3 javascript angularjs

我偶尔会发现试图检测JQuery是否存在的插件,或者可能有1-2行代码使用$.我想知道是否有可能以某种方式使角度应用程序之外的Angular的JQLite可用?我第一次尝试简单地看看JQLite是否可用是不行的.基本上我想要变量$jQuery在任何地方(或至少在我的ng-app区域内)可用,看看它是否包含足够的功能让这些jquery插件/代码工作.

这是源https://github.com/angular/angular.js/blob/master/src/jqLit​​e.js

Ove*_*ous 7

实际上,你可以,但它几乎肯定无济于事.

如果你想"导出"它,你只需要在加载Angular JavaScript之后添加它:

window.jQuery = window.$ = angular.element;
Run Code Online (Sandbox Code Playgroud)

现在打电话$()jQuery()将要运行jqLite. 这就是为什么它很可能不起作用:jqLite不支持选择器,这意味着你做不到

angular.element('.foo').html();
Run Code Online (Sandbox Code Playgroud)

您只会收到一条错误,指出选择器未实现.

这是一个jsFiddle,显示它直接在元素上使用时工作,但是使用选择器失败.


编辑

根据Yashua的建议,下面是使用他的技巧来启用选择器更新.如果jqLit​​e足够好,这是一个很好的技巧/黑客.


就个人而言,我不同意你应该只包含jQuery.它是另一个依赖的大型库,如果你只是执行几个单行,你应该能够使用适当的指令直接将它们集成到Angular中.我会花时间看看你是否可以重写现有的代码.