• Angular2组件开发—模板的逻辑控制(一)


    使用条件逻辑

    有时我们需要模板的一部分内容在满足一定条件时才显示,比如右边示例中的EzReader组件, 对于试用用户,它将在正文之上额外显示一个广告:

    这是指令NgIf发挥作用的场景,它评估属性ngIf的值是否为真,来决定是否渲染template元素的内容

    1 @View({
    2     template : `<!--根据变量trial的值决定是否显示广告图片-->
    3                 <template [ng-if]="trial==true">
    4                     <img src="ad.jpg">
    5                 </template>
    6                 <!--以下是正文-->
    7                 <pre>...</pre>`
    8 })

    Angular2同时提供了两种语法糖,让NgIf写起来更简单,下面的两种书写方法和上面 的正式语法是等效的:

    1 //使用template attribute
    2 <img src="ad.jpg" template="ng-if tiral==true">
    3 //使用*前缀
    4 <img src="ad.jpg" *ng-if="tiral==true">

    看起来,显然*ng-if的书写方法更加有人情味儿,不过无论采用哪种书写方法,都将转换 成上面的正式写法,再进行编译。

    需要指出的是,NgIf是Angular2预置的指令/Directive,所以在使用之前,需要:

    1. 从angular2库中引入NgIf类型定义
    2. 在组件的ViewAnnotation中通过属性directives声明对该指令的引用

    例如:

     1 <!doctype html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8">
     5     <title>Interpolation</title>
     6     <script type="text/javascript" src="lib/system@0.16.11.js"></script>
     7     <script type="text/javascript" src="lib/angular2.dev.js"></script>
     8     <script type="text/javascript" src="lib/system.config.js"></script>
     9 </head>
    10 <body>
    11     <ez-app></ez-app>
    12     <script type="module">
    13         //引入NgIf类型
    14         import {Component,View,bootstrap,NgIf} from "angular2/angular2";
    15         
    16         @Component({selector:"ez-app"})
    17         @View({
    18             directives:[EzReader],
    19             template:`
    20                 <ez-reader [trial]="true"></ez-reader>
    21             `
    22         })
    23         class EzApp{}
    24         
    25         @Component({
    26             selector : "ez-reader",
    27             properties:["trial"]
    28         })
    29         @View({
    30             directives:[NgIf],
    31             template : `
    32                    <img [src]="banner" *ng-if="trial==true">
    33                 <pre>{{content}}</pre>`
    34         })
    35         class EzReader{
    36             constructor(){
    37                 var self = this;
    38                 this._trial = true;
    39                 this.banner = "img/banner.jpg";
    40                 this.content = `
    41     “没关系,我已经没有放射性了。”史强对坐在旁边的汪森说,“这两天,我让人家像洗面口袋似的翻出来洗了个遍。
    42 这次会议本来没安排你参加,是我坚决要求请你来的,嘿。我保准咱哥俩这次准能出风头的。”
    43 
    44     史强说着,从会议桌上的烟灰缸中拣出一只雪茄屁股,点上后抽一口,点点头,心旷神怡地把烟徐徐吐到对面与会
    45 者的面前,其中就有这支雪茄的原主人斯坦顿,一名美国海军陆战队上校,他向大史投去鄙夷的目光。
    46 
    47     这次与会的有更多的外国军人,而且都穿上了军装。在人类历史上,全世界的武装力量第一次面对共同的敌人。
    48 
    49     常伟思将军说:“同志们,这次与会的所有人,对目前形势都有了基本的了解,用大史的话说,信息对等了。人类
    50 与外星侵略者的战争已经开始,虽然在四个半世纪后,我们的子孙才会真正面对来自异星的三体人侵者,我们现在与之
    51 作战的仍是人类;但从本质上讲,这些人类的背叛者也可以看成来自地球文明之外的敌人,我们是第一次面对这样的敌人。
    52 下一步的作战目标十分明确,就是要夺取‘审判日’号上被截留的三体信息,这些信息,可能对人类文明的存亡具有重要
    53 意义。
    54                 `;
    55             }
    56         }
    57         
    58         bootstrap(EzApp);
    59     </script>
    60 </body>
    61 </html>
  • 相关阅读:
    论文Objects as Points的解读
    图像增强
    from __future__ import absolute_import作用
    python降级
    conda命令总是出现Solving environment: failed错误
    ResNet网络结构
    卷积与池化操作后特征图大小的计算
    vs2015安装包下载与安装教程
    每隔几秒检测进程是否挂了
    阿里云部署flask
  • 原文地址:https://www.cnblogs.com/gett/p/5046391.html
Copyright © 2020-2023  润新知