我正在学习angularjs。我陷入了transclusion属性中,这让我感到困惑.ng-transclude如何工作?它会使用已包含元素(要被包含的元素)替换标有ng-transclude的dom内的内容,还是将附加元素包含在标有ng-transclude的dom中?
我引用了Egghead Anglejs视频教程的包含属性
https://egghead.io/lessons/angularjs-transclusion-basics
有人提到ng-transclude只是将被包含的元素附加到标有ng-transclude的dom上。但是当我尝试这样做时,事实并非如此。
这是我的html文件
learning.hmtl
<html ng-app="learnangular">
<head>
<title></title>
<script type="text/javascript" src="angular.js"></script>
<script type="text/javascript" src="learnscript.js"></script>
</head>
<body>
<div ng-controller="firstcontroller">
<custom-directive><div>This is transcluded part</div></custom-directive>
</div>
</body>
</html>
这是我的脚本文件
学习脚本
var app=angular.module("learnangular",[]);
app.controller("firstcontroller",function($scope){
$scope.dirobject="directive object";
});
app.directive("customDirective",function(){
return {
restrict:"E",
transclude:true,
replace:false,
template:"<input type='text' ng-model='dirobject'></input>"+
"<div ng-transclude>{{dirobject}}</div>",
link:function(scope,element,attr){
}
};
});
ng-transclude会替换标有ng-transclude的dom内的内容。为什么?
最佳答案
我现在已经了解了。该视频是使用angular js 1.0.x录制的,而我使用的是最新版本。实际上,在最新版本中,嵌入标记会完全用ng-transclude属性替换元素的内容。在以前的版本中,将添加已包含的标记。感谢大家