• 7.包含(ng-Include)


    转自:https://www.cnblogs.com/best/tag/Angular/

    获取、编译并引用一个外部HTML片段(也可以是内部的)

    默认情况下,模板URL被强制为使用与应用文档相同的域名和协议。这是通过调用$sce.getTrustedResourceUrl 实现的。为了从其它的域名和协议载入模板,你可以采用 白名单化 或 包裹化 任一手段来作为可信任值。参考 Angular的 强上下文转义。
    此外,浏览器的 同源策略 和 交叉源资源共享(CORS) 策略会进一步限制模板是否能成功载入。例如,ngInclude 在所有浏览器上不能进行交叉域请求,一些浏览不能访问 file:// 等。

    <ng-include src="" [onload=""] [autoscroll=""]></ng-include>
    <ANY ng-include="" [onload=""] [autoscroll=""]></ANY>
    <ANY class="ng-include: ; [onload: ;] [autoscroll: ;]"> </ANY>

    外部包含:

    外部包含是指包含一个独立的外部文件。

    包含时请注意中间页面地址要加引号,需要的是一个字符,如果不加会认为是一个变量。

    header.html

    <header>
        <h2>欢迎光临天狗商城</h2>
    </header>

    footer.html

     1 <style>
     2     .cls1 {
     3         background: lightblue;
     4         height: 100px;
     5         line-height: 100px;
     6         text-align: center;
     7     }
     8 </style>
     9 <footer class="cls1">
    10     <h3>版本所有 违者必究</h3>
    11 </footer>

    d05.html

     1 <!DOCTYPE html>
     2 <!--指定angular管理的范围-->
     3 <html ng-app="app01">
     4 
     5     <head>
     6         <meta charset="UTF-8">
     7         <title>指令</title>
     8     </head>
     9 
    10     <body>
    11         <!--指定控制器的作用范围-->
    12         <form ng-controller="Controller1" name="form1" ng-init="header='header.html'">
    13             <ng-include src="header"></ng-include>
    14             <ng-include src="'header.html'"></ng-include>
    15             <div ng-include="'footer.html'"></div>
    16         </form>
    17         <!--引入angularjs框架-->
    18         <script src="js/angular146/angular.min.js" type="text/javascript" charset="utf-8"></script>
    19         <script type="text/javascript">
    20             //定义模块,指定依赖项为空
    21             var app01 = angular.module("app01", []);
    22             //定义控制器,指定控制器的名称,$scope是全局对象
    23             app01.controller("Controller1", function($scope) {
    24             });
    25             function regTest()
    26             {
    27                 var reg1=new RegExp("d","igm");
    28                 var reg2=/d/igm;
    29                 
    30                 var str="This is some bad,dark evil text";
    31                 str=str.replace(/bad|dark|evil/igm,"Happy");
    32                 console.log(str);
    33                 
    34                 //取出Hello Hello
    35                 var str="<input value='Hello'/><input value='World'/>";
    36                 //将value中的内容前后增加一个*
    37             }
    38             regTest();
    39         </script>
    40     </body>
    41 
    42 </html>

    运行结果:

    内部包含:

    先定义模板,指定id与类型,模板中可以是任意片段:

    <script id="p1" type="text/ng-template">

    引用模板,模板中可以使用angular表达式,引用的方法与外部包含一样。

     1 <!DOCTYPE html>
     2 <!--指定angular管理的范围-->
     3 <html ng-app="app01">
     4 
     5     <head>
     6         <meta charset="UTF-8">
     7         <title>指令</title>
     8     </head>
     9 
    10     <body>
    11         <!--指定控制器的作用范围-->
    12         <form ng-controller="Controller1" name="form1" ng-init="header='header.html'">
    13             <ng-include src="header"></ng-include>
    14             <ng-include src="'header.html'"></ng-include>
    15             
    16             <script id="template1" type="text/ng-template">
    17                 您想购买的商品是:{{product}}
    18             </script>
    19             
    20             <ng-include src="'template1'" onLoad="product='SD卡'"></ng-include>
    21             <ng-include src="'template1'" onLoad="product='TF卡'"></ng-include>
    22             
    23             <div ng-include="'footer.html'"></div>
    24         </form>
    25         <!--引入angularjs框架-->
    26         <script src="js/angular146/angular.min.js" type="text/javascript" charset="utf-8"></script>
    27         <script type="text/javascript">
    28             //定义模块,指定依赖项为空
    29             var app01 = angular.module("app01", []);
    30             //定义控制器,指定控制器的名称,$scope是全局对象
    31             app01.controller("Controller1", function($scope) {
    32             });
    33             function regTest()
    34             {
    35                 var reg1=new RegExp("d","igm");
    36                 var reg2=/d/igm;
    37                 
    38                 var str="This is some bad,dark evil text";
    39                 str=str.replace(/bad|dark|evil/igm,"Happy");
    40                 console.log(str);
    41                 
    42                 //取出Hello Hello
    43                 var str="<input value='Hello'/><input value='World'/>";
    44                 //将value中的内容前后增加一个*
    45             }
    46             regTest();
    47         </script>
    48     </body>
    49 
    50 </html>

    运行结果:

    上面的结果都是“TF卡”的原因是因为模板是先包含再解析的,后定义的变量覆盖前面定义的,并不是一边包含一边渲染的。

  • 相关阅读:
    [thinkphp] 是如何输出一个页面的
    [thinkphp] 获取根目录绝对路径
    onethink 插件模板定位
    win7 安全模式开启声音
    百度贴吧楼层评论地址
    第一天问题
    [php] 解析JSON字符串
    NDK编译时两 .so之间调用问题
    CDN问题积累
    C++模板特化
  • 原文地址:https://www.cnblogs.com/sharpest/p/8126777.html
Copyright © 2020-2023  润新知