今天我们要讲的是angualr2的模板语法,官网写的很清楚,但我也用通俗易懂的讲法再罗列一下吧!

例子

源代码

属性绑定

不需要特别的指令,只需要用[value]就可以了,并不只有value,[]里面可以是任何常用的html元素的属性!

app/app.html

<input [value]="firstName" [placeholder]="firstNamePlaceholder" />

也可以用双花括号:

app/app.html

<input value="{{firstName}}" placeholder="{{firstNamePlaceholder}}" />

绑定的属性从何而来?从我们定义的类中:

app/app.ts

firstName: string = 'lewis';

事件

你可以在angular2中监听任何html5原生的元素事件,只需要使用这个语法: (eventName)

app/app.html

<button (click)="doSomething($event)" >点击</button>

doSomething从何而来?跟属性firstName一样,在类中定义:

app/app.ts

doSomething($event){
        console.log('点击了这个按钮:',$event.target);
    }

双向数据绑定

刚才讲的是单向数据绑定,不信你可以改变input的值看看,别的绑定会不会变动。答案是不会!这次我们来做双向数据绑定:

app/app.html

<input type="text" [value]="firstName" (input)="firstName=$event.target.value" />
    <input type="text" [(ngModel)]="firstName" />

使用单向绑定加事绑定可以,使用[(ngModel)]也可以!这样你再改变input的值,所有绑定firstName的值都会跟着变化!

angular2的双向数据绑定没有用“脏检查”,而是用了zone.js。这是个什么库呢?

A zone is an execution context that persists across async tasks.

用来维持切换上下文的库。用来替代$apply()的一个库。告诉你何时更新视图!

局部变量

局部变量 # 是一个对象或者dom元素的指针,什么意思?看代码:

app/app.html

<!-- phone refers to the input element; pass its `value` to an event handler -->
    <input #phone placeholder="phone number">
    <button (click)="callPhone(phone.value)">Call</button>

    <!-- fax refers to the input element; pass its `value` to an event handler -->
    <input var-fax placeholder="fax number">
    <button (click)="callFax(fax.value)">Fax</button>

一切尽在不言中!

*语法与template标签

先看一个*语法与template标签的应用:

<p *ngIf="isActive">我是段落</p>

相当于

<template [ngIf]="isActive"><p>我是段落</p></template>

这段代码的意思是,如果isActive为true则渲染p元素。

template标签声明了一段 DOM ,这段DOM在runtime后会被实例化。

使用template我们可以将一段DOM包裹起来,声明它,然后决定要不要渲染他们。不渲染的话,里面的元素就不会加载,可以节省运算。如果你用div和隐藏效果的话,里面的元素还得加载,浪费了运算。

我们也使用*语法替代template标签。起到同样的作用。

用*装饰的自带指令还有:NgForNgIf, 和NgSwitch。都是控制是否渲染的指令。我们用*来装饰后,就可以产生类似template的效果!

更多语法

以上只是介绍了常用的语法,还有更多的语法参考可以直接去官网


教程源代码及目录

如果您觉得本博客教程帮到了您,就赏颗星吧!

https://github.com/lewis617/angular2-tutorial

angular2系列教程(二)模板语法的更多相关文章

  1. angular2系列教程(一)hello world

    今天我们要讲的是angular2系列教程的第一篇,主要是学习angular2的运行,以及感受angular2的components以及模板语法. 例子 这个例子非常简单,是个双向数据绑定.我使用了官网 ...

  2. CRL快速开发框架系列教程二(基于Lambda表达式查询)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  3. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级) 企业库加密应用程序模块提供了2种方 ...

  4. webpack4 系列教程(二): 编译 ES6

    今天介绍webpack怎么编译ES6的各种函数和语法.敲黑板:这是webpack4版本哦, 有一些不同于webpack3的地方. >>> 本节课源码 >>> 所有课 ...

  5. Shell脚本系列教程二: 开始Shell编程

    Shell脚本系列教程二: 开始Shell编程 2.1 如何写shell script? (1) 最常用的是使用vi或者mcedit来编写shell脚本, 但是你也可以使用任何你喜欢的编辑器; (2) ...

  6. WPF系列教程——(二)使用Prism实现MVVM设计模式 - 简书

    原文:WPF系列教程--(二)使用Prism实现MVVM设计模式 - 简书 本文假设你已经知道MVVM设计模式是什么,所以直接进入正题,今天我们就用Prism来实现WPF的MVVM设计模式,百度上关于 ...

  7. angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用

    今天我们要讲的是ng2的路由系统. 例子

  8. C#微信公众号开发系列教程二(新手接入指南)

    http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可 ...

  9. Android Studio系列教程二--基本设置与运行

    Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...

  10. NGUI系列教程二

    接下来我们创建一个Label,NGUI->Open the Widget Wizard,打开widgetTool对话框,在Template中选择Label,确定AddTo右侧选项为panel,点 ...

随机推荐

  1. C# DateTime与时间戳转换

    C# DateTime与时间戳的相互转换,包括JavaScript时间戳和Unix的时间戳. 1. 什么是时间戳 首先要清楚JavaScript与Unix的时间戳的区别: JavaScript时间戳: ...

  2. MVVM模式解析和在WPF中的实现(三)命令绑定

    MVVM模式解析和在WPF中的实现(三) 命令绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  3. 简单粗暴地理解js原型链--js面向对象编程

    原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧, ...

  4. 页面中多个script块之间的关系

     一:函数声明与函数定义表达式在函数调用间的区别 <script type="text/javascript"> doA(); var doA = function(a ...

  5. 一道返回num值的小题目

    题目描述: 实现fizzBuzz函数,参数num与返回值的关系如下: .如果num能同时被3和5整除,返回字符串fizzbuzz .如果num能被3整除,返回字符串fizz .如果num能被5整除,返 ...

  6. Android ViewPager打造3D画廊

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...

  7. 第一个移动前端开源项目-dailog

    你还在为手机上没有忙碌光标而发愁吗?你还在抱怨弹出框组件要依赖zepto/jqery吗?你还在纠结是否要自己写一套还是去网上寻找成现成的UI组件吗?YouA为你轻松解决所有烦恼.YouA是我为移动前端 ...

  8. ASP.NET Core 中文文档 第五章 测试(5.2)集成测试

    原文: Integration Testing 作者: Steve Smith 翻译: 王健 校对: 孟帅洋(书缘) 集成测试确保应用程序的组件组装在一起时正常工作. ASP.NET Core支持使用 ...

  9. C#~异步编程再续~await与async引起的w3wp.exe崩溃-问题友好的解决

    返回目录 关于死锁的原因 理解该死锁的原因在于理解await 处理contexts的方式,默认的,当一个未完成的Task 被await的时候,当前的上下文将在该Task完成的时候重新获得并继续执行剩余 ...

  10. 使用JavaScript为一张图片设置备选路径

    在做网页开发的时候,有时候希望给图片设置一个备选路径,即,当src属性对应的主路径加载失败的时候,图片可以马上切换到备选路径.这样,即使主路径失效了,显示备用路径也不会影响网页的正常体验. 注意到网页 ...