千家信息网

angular.js指令中transclude选项及ng-transclude指令怎么用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要为大家展示了"angular.js指令中transclude选项及ng-transclude指令怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习
千家信息网最后更新 2025年11月07日angular.js指令中transclude选项及ng-transclude指令怎么用

这篇文章主要为大家展示了"angular.js指令中transclude选项及ng-transclude指令怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"angular.js指令中transclude选项及ng-transclude指令怎么用"这篇文章吧。

transclude字面意思就是嵌入,也就是说你需不需要将你的指令内部的元素(注意不是指令的模板)嵌入到你的模板中去,默认是false。如果你需要这种功能的话,那么就需要将transclude设置为true或者{...}。如果将这个值设置为true或者{...}的话,那么就要配合angular的ng-transclude指令来进行使用,好,废话不多说了,看代码是最好的学习方法,我们下面就来根据代码来了解掌握这些东西。

代码的结果可以在这里看到,完整的代码会在后面贴出来。

现在我们来看第一个指令部分

1、在页面中使用的形式

 

我们定义了一个名字叫做one-transclude的指令,也就是说这个指令的模板中只有一个嵌入点的,指令内部是有一些元素的我给内部的元素的内容做了一些标记,方便我们后面观察。

2、JavaScript代码部分

angular.module('app', []) .directive('oneTransclude', oneTransclude);function oneTransclude() { return { restrict: 'AE', transclude: true, templateUrl: 'one-transclude.html' };}

我们在JavaScript中定义oneTransclude,注意我们这里transclude=true,表明我们希望在模板中将指令的内部元素嵌入到模板中的某个位置。

3、指令的模板部分

$BBBBBB$ 我是指令[one-transclude]模板的内容

$CCCCCC$ 我是指令[one-transclude]模板中[ng-transclude]中的内容

上面书写了我们的指令模板,可以看到我们的模板由两部分组成,一部分是含有ng-transclude指令的,一部分是不含有这个指令的。当然我也把这些里面的内容作了一些标记,方便后面我们观察。因为这里的ng-transclude后面不带有参数,所以指令里面的元素就是那些以$AAAAAA$开头的整块元素都会嵌入到指令模板中含有ng-transclude指令的内部,还要注意,如果指令模板中含有ng-transclude指令的元素内部也有元素的话,那么这些元素会被替代。还有一种情况,那就是如果指令里面不含有元素,那么指令模板里面的含有ng-transclude指令的元素的内部元素会显示出来

4、我们可以看下图更直观的了解一下。

多个嵌入点的情况,这时候指令内部的ng-transclude的值是一个对象,一种映射关系;具体的可以看下面的代码:

5、指令在页面中使用的代码:

 我是指令元素内部的title 我是指令元素内部的body 我是指令元素内部的footer

我们在页面中使用了multi-transclude这个指令,在指令的内部还有三个指令,这内部的三个指令要以E的形式应用,不然会出现问题,看到这里不明白的没关系,继续往下看。

6、JavaScript代码中的指令:

angular.module('app', []) .directive('multiTransclude', multiTransclude); function multiTransclude() { return { restrict: 'AE', transclude: {  'title': 'multiTranscludeTitle',  'body': 'multiTranscludeBody',  'footer': '?multiTranscludeFooter' }, templateUrl: 'multi-transclude.html' };}

我们的transclude对象定义了如何将多个嵌入点与指令内部的指令嵌入点一一对应,拿'footer': '?multiTranscludeFooter'来解释一下,footer对应指令模板中的一个嵌入点,multiTranscludeFooter对应指令元素内部的哪个multi-transclude-footer指令,前面的?表示这个嵌入点不一定有对应的指令存在。当然multiTranscludeFooter是我们自己定义的,可以随意定义,但是尽量做到让大家一看就知道是对应哪个嵌入点就行。

7、指令对应的模板

忽略我,我就是证明我是在模板中的1
忽略我,我就是证明我是在模板中的2

从上面的模板中我们可以看到,指令ng-transclude后面的字符串就是我们定义的嵌入点,也就是上面指令定义时候用到的那些字符串。

到这里关于ng-transclude以及angular指令的transclude选项我想大家应该都明白了。

完整的代码部分

1、index.html

指令one-transclude 内部含有元素

指令one-transclude 内部不含有元素

指令mutil-transclude

我是指令元素内部的title 我是指令元素内部的body 我是指令元素内部的footer

2、app.js

(function() {angular.module('app', []) .controller('MyController', myController) .directive('oneTransclude', oneTransclude) .directive('multiTransclude', multiTransclude);myController.$inject = [];function myController() { var vm = this; vm.title = 'ng-transclude';}function oneTransclude() { return { restrict: 'AE', transclude: true, templateUrl: 'one-transclude.html' };}function multiTransclude() { return { restrict: 'AE', transclude: {  'title': 'multiTranscludeTitle',  'body': 'multiTranscludeBody',  'footer': '?multiTranscludeFooter' }, templateUrl: 'multi-transclude.html' };}})();

3、one-transclude.html

$BBBBBB$ 我是指令[one-transclude]模板的内容

$CCCCCC$ 我是指令[one-transclude]模板中[ng-transclude]中的内容

4、multi-transclude.html

忽略我,我就是证明我是在模板中的1
忽略我,我就是证明我是在模板中的2

以上是"angular.js指令中transclude选项及ng-transclude指令怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

指令 元素 模板 内容 代码 就是 部分 是在 也就是 篇文章 页面 学习 三个 也就是说 多个 字符 字符串 对象 形式 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 嘉定区现代化网络技术收购价 数据库完整性实施分析 数字货币受益最大的网络安全公司 房山区通用网络技术客户至上 大连信息化软件开发技术怎么样 精武镇网络安全课 如何写web服务器 洮北法院网络安全宣传周 数据库储存方式 车载网络技术书籍 丰台区运营网络技术售后服务 江苏手机软件开发报价 什么叫零极数字网络技术 浦东新区发展网络技术咨询怎么样 软件开发体系架构 dns服务器带web管理界面 洛阳市翔度网络技术有限公司 珠海溢动网络技术有限公司 邮局软件开发岗 数据库数据模型考试题 我的世界虎牙服务器怎么重连 外国服务器有多强大 软件测试数据库面试问题 网络技术应用前言 监控软件开发 杭州 互联网信息科技改变着人们 大学生网络安全的总结报告 凉山软件开发有限公司 四川电商软件开发机构 公安局数据库资料.txt
0