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都是必需的。

  • 相关阅读:
    实验四 决策树算法及应用
    实验三 朴素贝叶斯算法及应用
    实验二 K-近邻算法及应用
    实验一 感知器及其应用
    实验三 面向对象分析与设计
    实验二 结构化分析与设计
    实验一 软件开发文档与工具的安装与使用
    个人作业三-ATM管理系统
    个人作业二-举例分析流程图与活动图的区别与联系
    第一次个人作业-四则运算题目生成程序(计算机181 张博闻)
  • 原文地址:https://www.cnblogs.com/sagacite/p/4619240.html
Copyright © 2011-2022 走看看