gpt4 book ai didi

javascript - Angular 指令编译函数中的 tElement 是一个 jQuery 元素吗?

转载 作者:行者123 更新时间:2023-11-30 12:05:00 26 4
gpt4 key购买 nike

我正在查看另一个用于复制元素的 SO 指令练习:

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>Directive Lifecycle</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.js"></script>
<script src="main.js"></script>
</head>

<body ng-app="app">
<double>
<h1>Ask Jeebus</h1>
</double>
</body>
</html>

JS

var app = angular.module('app', []);
app.directive('double', function() {
return {
restrict: 'E',
compile: function(tElement, attrs) {
var content = tElement.children();
tElement.append(content.clone());
tElement.replaceWith(tElement.children());
}
}
});

函数 .children()、.append 和 clone 似乎都来自 jQuery。我知道 Angular 提供了它自己的 jQuerylite,它具有 jQuery 的某些部分,那是 tElement 使用的吗?或者它是否使用了所有 jQuery。

作为附带问题,为什么必须使用 content.clone()?它不适用于tElement.append(content) 即使当我记录 content 和 content.clone() 时它们看起来是相同的 h1。

最佳答案

这取决于您何时加载 jQuery API。

如果 jQuery 在 Angular 之前加载,您将获得 jQuery 编译的 DOM(首选方式),否则您将获得 jQLite 编译的 DOM。

如果你已经加载了 jQuery,稍后加载 Angular,你可以直接访问 jQuery API,你需要再次用 jQuery 重新编译它,方法是将该元素包装在 $ 函数中,如 $(element)

关于javascript - Angular 指令编译函数中的 tElement 是一个 jQuery 元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35509292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com