zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Algebraic Data Type 及其在 Haskell 和 Scala 中的表现
    理解Rust的引用与借用
    ZooKeeper学习之路 (九)利用ZooKeeper搭建Hadoop的HA集群
    ZooKeeper学习之路 (八)ZooKeeper原理解析
    ZooKeeper学习之路 (七)ZooKeeper设计特点及典型应用场景
    ZooKeeper学习之路 (六)ZooKeeper API的简单使用(二)级联删除与创建
    ZooKeeper学习之路 (五)ZooKeeper API的简单使用 增删改查
    ZooKeeper学习之路 (四)ZooKeeper开发环境eclipse配置
    Zookeeper学习之路 (三)shell操作
    Zookeeper学习之路 (二)集群搭建
  • 原文地址:https://www.cnblogs.com/jyybeam/p/6925043.html
Copyright © 2011-2022 走看看