强制 Angular 在 JQLite 上使用 jQuery
Posted
技术标签:
【中文标题】强制 Angular 在 JQLite 上使用 jQuery【英文标题】:Forcing angular to use jQuery over JQLite 【发布时间】:2020-11-11 23:56:41 【问题描述】:根据角度文档 如果 jQuery 可用,则 angular.element 是 jQuery 函数的别名。如果 jQuery 不可用,则 angular.element 委托给 AngularJS 的内置 jQuery 子集,称为“jQuery lite”或 jqLite。
我试图通过在 jQuery 之后加载 Angular 来。然而 angular.element 仍然是一个 JQLite 参考。下面是代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
</head>
<body>
<button onClick="load()">load</button>
<button onClick="check()">check</button>
</body>
<script>
function load()
var scriptElement = document.createElement("script");
scriptElement.onload = function ()
console.log("Successfully loaded script 2 using (onload).");
;
scriptElement.src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js";
document.head.appendChild(scriptElement);
function check()
console.log(angular.element == jQuery) // false
</script>
</html>
如果我检查angular.element('div')
,在加载完所有内容后也会出现 jQlite 错误,
angular.js:3236 Uncaught Error: [jqLite:nosel] http://errors.angularjs.org/1.6.9/jqLite/nosel
at angular.js:88
at Object.V [as element] (angular.js:3236)
at <anonymous>:1:9
这显然意味着 angular 指向 jQlite 而不是 jQuery。
我正在按照文档将角度指向 jQuery。我哪里错了?
【问题讨论】:
【参考方案1】:就像在 html 元素上使用 ngJq 并为 jQuery 传递 window 变量一样简单。这将导致 angular 覆盖 jQlite 的使用
<!doctype html>
<html ng-app ng-jq="jQuery">
...
...
</html>
【讨论】:
以上是关于强制 Angular 在 JQLite 上使用 jQuery的主要内容,如果未能解决你的问题,请参考以下文章