我正在研究另一个复制元素的指令练习:
<!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和克隆似乎都来自于jQuery。我知道角提供了它自己的jQuerylite,它包含了jQuery的某些部分,这是tElement正在使用的吗?或者它使用了所有的jQuery。
作为一个附带的问题,为什么必须使用content.clone()?它并不只适用于tElement.append(内容),即使当我记录内容和content.clone()时,它们似乎是相同的h1。
发布于 2016-02-19 07:52:58
这取决于加载jQuery
API的时间。
如果jQuery
是在角之前加载的,您将得到jQuery
编译的DOM (首选方式),否则您将得到jQLite
编译的DOM。
如果加载了jQuery后角,您可以直接访问jQuery API,您需要再次使用jQuery重新编译该元素,方法是将该元素封装在$
函数中,如$(element)
。
https://stackoverflow.com/questions/35509292
复制相似问题