您的位置:首页 > Web前端 > AngularJS

angularJs中自定义指令transclude与templateUrl详解

2017-06-05 11:37 531 查看
默认情况下,自定义指令里模板的部分会替换掉指令所使用的所有内容,那么,如果想保留这些内容,就要使用transclude属性。

1.html

<div ng-app="module">
<div my-exam>你好</div>
</div>
<script>
var m = angular.module('module', []);
m.directive('myExam', [function () {
return {
restrict: 'EA',
template: '<h1><div ng-transclude=""></div>欢迎浏览泠泠在路上</h1>',
/*transclude为true时,可以让 <div my-exam>你好</div>内容在template中的 <div ng-transclude=""></div>位置处显示出来*/
transclude:true,

}
}]);
</script>


效果图:



templateUrl是指令模板地址的属性,一般单独建一个文件夹,命名和指令的命名相同,以防出现问题。

2.html

<div ng-app="module">
<div my-exam>你好</div>
</div>
<script>
var m = angular.module('module', []);
m.directive('myExam', [function () {
return {
restrict: 'EA',
templateUrl:'view/myexam.html',
/*在使用templateUrl时,使用了replace:true,需要在myexam.html文件中有一个顶层容器,即内容可以被<div></div>或其他容器包裹,不然会报错*/
replace:true,
}
}]);
</script>


myexam.html

<h1>这是myexam指令的模板</h1>


效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  angularjs