• 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>
  • 相关阅读:
    ubuntu安装与卸载java
    linux ubuntu 用户名,主机名,密码修改,增加用户,删除用户
    linux中sudo fdisk -l报错:GPT PMBR size mismatch will be corrected by write错误
    VM VirtualBox虚拟机vdi扩大磁盘空间容量
    WinSCP传输文件到虚拟机linux报错:SSH2_MSG_CHANNEL_FAILURE for nonexistent channel 0
    parallel python多进程集群模式
    zookeeper报错:ERROR [main:QuorumPeerMain@86]
    hive启动报错:Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8 at
    3.数据链路层
    2.物理层
  • 原文地址:https://www.cnblogs.com/jyybeam/p/6925043.html
Copyright © 2020-2023  润新知