angular中transclude的理解
今天被这个transclude搞糊涂了,弄了半天,才知道原来使用起来很简单。很烦恼为社么书中的对于这个的介绍这么晦涩难懂。直到看到了这篇文章,才让我弄清楚了。
一、transclude介绍
transclude是angular中自定义指令中的一个参数。中文就是嵌入的意思。也就是说通过这个参数设置,可以将指令内容嵌入到自定义指令中的模版中。其值默认是false,当为true时,会起到嵌入的作用。
二、使用
首先我们先看一下不使用tranclude的情况:
js:
app.directive('myDirective',function(){
return{
template : '<p>指令模版中的内容</p>'
}
}); html:
<div my-directive></div>
这是一段最简单的自定义指令代码,不用解释,都能懂。
在这个基础上,我脑洞一下,我在html的自定义指令标签中随意添加点什么东西会怎样呢?
js:
app.directive('myDirective',function(){
return{
template : '<p>指令模版中的内容</p>'
}
}); html:
<div my-directive>这是指令中的内容</div>
结果也很容易知道。最后html中的代码是:
<div my-directive>
<p>这是指令模版中的内容</p>
</div>
也就是说最后执行的结果是指令模版中的内容将指令中的代码进行了覆盖。
那么问题来了,如果我想把指令中的内容嵌入到指令模版中,怎么办?这个时候就需要用到transclude了。实现的方法如下:
app.directive('myDirective',function(){
return{
transclude : true,
template : '<p ng-transclude>指令模版中的内容</p>'
}
});
其中橙色的地方是需要增加的,在模版中,ng-transclude的作用就是告诉angular嵌入的位置。结果就是:
<div my-directive="">
<p ng-transclude="">
<span class="ng-scope">这是指令中的内容</span>
</p>
</div>
span标签是系统自动生成的,具体作用还未了解,但是这不妨碍对transclude的探讨。
进一步,如果我们想把指令模版中的内容和指令中的内容都显示出来,可以这么做:
app.directive('myDirective',function(){
return{
transclude : true,
template : '<p>指令模版中的内容</p><br><p ng-transclude></p>'
}
});
结果就是
<div my-directive="">
<p>指令模版中的内容</p><br>
<p ng-transclude="">
<span class="ng-scope">span这是指令中的内容</span>
</p>
</div>
angular中transclude的理解的更多相关文章
- (七)理解angular中的module和injector,即依赖注入
(七)理解angular中的module和injector,即依赖注入 时间:2014-10-10 01:16:54 阅读:63060 评论:1 收藏:0 [点 ...
- 理解angular中的module和injector,即依赖注入
理解angular中的module和injector,即依赖注入 依赖注入(DI)的好处不再赘言,使用过spring框架的都知道.angularjs作为前台js框架,也提供了对DI的支持,这是java ...
- AngularJS中transclude用法详解
这篇文章主要介绍了AngularJS中transclude用法,详细分析了transclude的具体功能.使用技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了AngularJS中transcl ...
- angular中的compile和link函数
angular中的compile和link函数 前言 这篇文章,我们将通过一个实例来了解 Angular 的 directives (指令)是如何处理的.Angular 是如何在 HTML 中找到这些 ...
- Deferred在jQuery和Angular中的使用与简单实现
Deferred在jQuery和Angular中的使用与简单实现 Deferred是在jQuery1.5版本中加入的,并且jQuery使用它完全重写了AJax,以前也只是偶尔使用.但是上次在使用Ang ...
- angular源码分析:angular中脏活累活承担者之$parse
我们在上一期中讲 $rootscope时,看到$rootscope是依赖$prase,其实不止是$rootscope,翻看angular的源码随便翻翻就可以发现很多地方是依赖于$parse的.而$pa ...
- angular源码分析:angular中$rootscope的实现——scope的一生
在angular中,$scope是一个关键的服务,可以被注入到controller中,注入其他服务却只能是$rootscope.scope是一个概念,是一个类,而$rootscope和被注入到cont ...
- 形象的讲解angular中的$q与promise(转)
以下内容摘自http://www.ngnice.com/posts/126ee9cf6ddb68 promise不是angular首创的,作为一种编程模式,它出现在……1976年,比js还要古老得多. ...
- angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)
昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...
随机推荐
- docker镜像没有ifconfig、ping指令
Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令 解决: apt-get update apt install net-tools # ifconfig apt ...
- CodeForces - 601A The Two Routes
http://codeforces.com/problemset/problem/601/A 这道题没想过来, 有点脑筋急转弯的感觉了 本质上就是找最短路径 但是卡在不能重复走同一个点 ----> ...
- MySQL Slow Log慢日志分析【转】
如果你的MySQL出现了性能问题,第一个需要“诊断”的就是slow log(慢日志)了. slow log文件很小,使用more less等命令就足够了.如果slow log很大怎么办?这里介绍MyS ...
- Swift--方法(函数)
方法是执行特殊任务的自包含代码块.你可以给方法名字来表示它的功能,而且在需要的时候调用这个名字的方法来执行它的任务. Swift方法的语法表达很灵活,从类似c的没有参数名的方法到oc复杂的带有名字和参 ...
- POJ 2109 Power of Cryptography【高精度+二分 Or double水过~~】
题目链接: http://poj.org/problem?id=2109 参考: http://blog.csdn.net/code_pang/article/details/8263971 题意: ...
- [Bzoj3209]花神的数论题(数位dp)
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2633 Solved: 1182[Submit][Status][Disc ...
- Java获取Linux系统cpu使用率
原文:http://www.open-open.com/code/view/1426152165201 import java.io.BufferedReader; import java.io.Fi ...
- jmete命令行停止失败的原因分析
1.在jmeter的master机器上使用如下方式启动远程IP地址2.2.2.2,3.3.3.3上的jmeter slave服务,执行到最后生成报告: sh apache-jmeter-3.1/bin ...
- 解决安装oracle11g r2时提示pdksh conflicts with ksh-20100621-2.el6.i686问题
http://blog.csdn.net/linghao00/article/details/7943740 http://www.2cto.com/os/201306/218566.html 在Ce ...
- 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)
浅谈c#的三个高级参数ref out 和Params c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和 ...