zoukankan      html  css  js  c++  java
  • AngularJs自定义指令详解(4)

     transclude默认值为false,如果设置 transclude为true,那么相应地,必须在模板代码中加入ng-transclude指令。

    先看个例子:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <script src="../lib/angular-1.3.16/angular.min.js"></script>
        <script src=""></script>
        <title></title>
        <script language="JavaScript">
    
            angular.module('app',[])
                    .directive('myDirective',function(){
                        return{
                            template:'<div>
                                        <h2>大标题</h2>
                                    </div>'
                        };
                    });
        </script>
    </head>
    <body ng-app="app">
    <div my-directive >
        <ul>
            <li>小标题1</li>
            <li>小标题2</li>
        </ul>
    </div>
    </body>
    </html>

    输出:

    大标题

    见鬼!小标题全不见了!审查元素看看:

    魂淡,全丢没了!

    没办法,出动transclude!看代码:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <script src="../lib/angular-1.3.16/angular.min.js"></script>
        <script src=""></script>
        <title></title>
        <script language="JavaScript">
    
            angular.module('app',[])
                    .directive('myDirective',function(){
                        return{
                            template:'<div>
                                        <h2>大标题</h2>
                                            <span ng-transclude></span>
                                    </div>',
                            transclude:true
                        };
                    });
        </script>
    </head>
    <body ng-app="app">
    <div my-directive >
        <ul>
            <li>小标题1</li>
            <li>小标题2</li>
        </ul>
    </div>
    </body>
    </html>

    输出:

    大标题

    • 小标题1
    • 小标题2

    审查元素看看:

    再看看这个指令嵌套的例子:

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <script src="../lib/angular-1.3.16/angular.min.js"></script>
        <script src=""></script>
        <title></title>
        <script language="JavaScript">
    
            angular.module('app',[])
                    .directive('myDirective',function(){
                        return{
                            restrict:'E',
                            template:'<div>
                                        <h2>大标题</h2>
                                            <span ng-transclude></span>
                                    </div>',
                            transclude:true
                        };
                    })
                    .directive('myDirective2',function(){
                        return{
                            restrict:'E',
                            template:'<div>
                                        <h3>中标题</h3>
                                            <span ng-transclude></span>
                                    </div>',
                            transclude:true
                        };
                    });
        </script>
    </head>
    <body ng-app="app">
    <my-directive>
        <my-directive2>
            <ul>
                <li>小标题1</li>
                <li>小标题2</li>
            </ul>
        </my-directive2>
    </my-directive>
    </body>
    </html>

    输出:

    大标题

    中标题

    • 小标题1
    • 小标题2

    可以尝试把指令里的transclude:true去掉,输出肯定有问题,所以两个指令里的transclude:true都是必需的。

  • 相关阅读:
    delphi for xx in xx do 语法的使用示例
    Delphi XE7的安卓程序如何调用JAVA的JAR,使用JAVA的类?
    ST Visual Programmer批量烧写教程
    关于FATFS文件系统挂载多个磁盘
    STM8不用手动复位进入自带Bootloader方法(串口下载)
    Linux下安装Eclipse
    微信平台二次开发实例讲解——三元篇
    架构设计深入学习01--概论与预架构阶段
    Linux tomcat安装详解
    程序员的自我修养——操作系统篇
  • 原文地址:https://www.cnblogs.com/sagacite/p/4619240.html
Copyright © 2011-2022 走看看