今天被这个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的理解的更多相关文章

  1. (七)理解angular中的module和injector,即依赖注入

    (七)理解angular中的module和injector,即依赖注入 时间:2014-10-10 01:16:54      阅读:63060      评论:1      收藏:0      [点 ...

  2. 理解angular中的module和injector,即依赖注入

    理解angular中的module和injector,即依赖注入 依赖注入(DI)的好处不再赘言,使用过spring框架的都知道.angularjs作为前台js框架,也提供了对DI的支持,这是java ...

  3. AngularJS中transclude用法详解

    这篇文章主要介绍了AngularJS中transclude用法,详细分析了transclude的具体功能.使用技巧与相关注意事项,需要的朋友可以参考下 本文实例讲述了AngularJS中transcl ...

  4. angular中的compile和link函数

    angular中的compile和link函数 前言 这篇文章,我们将通过一个实例来了解 Angular 的 directives (指令)是如何处理的.Angular 是如何在 HTML 中找到这些 ...

  5. Deferred在jQuery和Angular中的使用与简单实现

    Deferred在jQuery和Angular中的使用与简单实现 Deferred是在jQuery1.5版本中加入的,并且jQuery使用它完全重写了AJax,以前也只是偶尔使用.但是上次在使用Ang ...

  6. angular源码分析:angular中脏活累活承担者之$parse

    我们在上一期中讲 $rootscope时,看到$rootscope是依赖$prase,其实不止是$rootscope,翻看angular的源码随便翻翻就可以发现很多地方是依赖于$parse的.而$pa ...

  7. angular源码分析:angular中$rootscope的实现——scope的一生

    在angular中,$scope是一个关键的服务,可以被注入到controller中,注入其他服务却只能是$rootscope.scope是一个概念,是一个类,而$rootscope和被注入到cont ...

  8. 形象的讲解angular中的$q与promise(转)

    以下内容摘自http://www.ngnice.com/posts/126ee9cf6ddb68 promise不是angular首创的,作为一种编程模式,它出现在……1976年,比js还要古老得多. ...

  9. angular源码分析:injector.js文件分析——angular中的依赖注入式如何实现的(续)

    昨天晚上写完angular源码分析:angular中jqLite的实现--你可以丢掉jQuery了,给今天定了一个题angular源码分析:injector.js文件,以及angular的加载流程,但 ...

随机推荐

  1. FusionCharts for Flex 如何更改图表数据

    FusionCharts allows to change chart data and re-render the chart, after it has loaded on the user’s ...

  2. 毕业bg--hdu1881(01背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=1881 01 背包  先按发起人离开的时间从小到大排序 然后再套01背包的模板 #include <iost ...

  3. P1396 营救 洛谷

    https://www.luogu.org/problem/show?pid=1396 题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起 ...

  4. UVA 12035 War Map

    让我先把微笑送给出题人 这个题最基础的一个想法:先找出一个度数和为总度数和的1/2的点集,然后判断这个点集和这个点集的补集能否形成二分图.但是就算我们把判断的复杂度看成O(1),这个算法的复杂度也是 ...

  5. JAVA实验--统计文章中单词的个数并排序

    分析: 1)要统计单词的个数,就自己的对文章中单词出现的判断的理解来说是:当出现一个非字母的字符的时候,对前面的一部分字符串归结为单词 2)对于最后要判断字母出现的个数这个问题,我认为应该是要用到ma ...

  6. jdk8 stream可以与list,map等数据结构互相转换

    前面我们使用过collect(toList()),在流中生成列表.实际开发过程中,List又是我们经常用到的数据结构,但是有时候我们也希望Stream能够转换生成其他的值,比如Map或者set,甚至希 ...

  7. Excel小tips - 设置指定可选填充内容

    数据——数据验证——设置——允许(A)——序列——来源 图1  数据验证界面 图2  选取序列数据字典 图3 效果展示 可以在同一个工作薄的同一个或者另一个工作表中设置指定内容(充当数据字典),然后点 ...

  8. 【转载】《Unix网络编程》思维导图

    参考这篇文章,很不错: http://www.cnblogs.com/qiaoconglovelife/p/5734768.html

  9. 主成分分析(principal components analysis)

    http://www.cnblogs.com/jerrylead/tag/Machine%20Learning/ PCA的思想是将n维特征映射到k维上(k<n),这k维是全新的正交特征.这k维特 ...

  10. 怎样扩展EasyUI在页面中马上显示选中的本地图片

    在编写前台页面的时候,有时须要将选中的图片夹杂着其它信息一起上传到服务端,在选着本地图片的时候,为了获得更好的效果,须要将该图片显示在页面上. 最初思路有两个.详细例如以下: 1.获取选中文件的二进制 ...