Angular 數(shù)據(jù)綁定

Angular 數(shù)據(jù)綁定

數(shù)據(jù)綁定

<h1>{{productTitlt}}!</h1>

使用插值表達(dá)式將一個表達(dá)式的值顯示在模版上固耘。

<img [src] = "imgUrl">

使用方括號將HTML標(biāo)簽的一個屬性綁定到一個表達(dá)式上题篷。

<button (click)="toProductDetail()">商品詳情</button>

使用小括號將組件控制器的一個方法綁定為模版上一個事件的處理器。

事件綁定

<input (input)="onInputEvent($event)">

  • 小括號表示這是一個事件綁定厅目。
  • input表示事件的名稱番枚。
  • onInputEvent表示當(dāng)事件發(fā)生時,執(zhí)行的表達(dá)式损敷。其中$event表示的是瀏覽器事件對象葫笼。

首先聲明一個組件ng g component bind

編寫頁面模版,添加點(diǎn)擊事件按鈕拗馒。

<p>
  bind works!
</p>
<button (click)="doOnClick($event)">點(diǎn)我</button>

在組件中實現(xiàn)點(diǎn)擊事件的方法路星,并將瀏覽器事件對象輸出到控制臺顯示。

import {Component, OnInit} from '@angular/core';

@Component({
  selector: 'app-bind',
  templateUrl: './bind.component.html',
  styleUrls: ['./bind.component.css']
})
export class BindComponent implements OnInit {

  constructor() {
  }

  ngOnInit() {
  }

  doOnClick(event: any) {
    console.log(event);
  }

}

屬性綁定

插值表達(dá)式和屬性綁定是一個東西诱桂。

修改頁面模版洋丐,使用屬性綁定。

<p>
  bind works!
</p>
<img [src]="imgUrl">

并且在組件中定義imgUrl

import {Component, OnInit} from '@angular/core';

@Component({
  selector: 'app-bind',
  templateUrl: './bind.component.html',
  styleUrls: ['./bind.component.css']
})
export class BindComponent implements OnInit {

  imgUrl: string = 'http://placehold.it/400x320';

  constructor() {
  }

  ngOnInit() {
  }

  doOnClick(event: any) {
    console.log(event);
  }

}

使用插值表達(dá)式改寫頁面模版挥等。

<p>
  bind works!
</p>
<img [src]="imgUrl">
<img src="{{imgUrl}}">

Angular會將插值表達(dá)式翻譯為對應(yīng)的屬性綁定友绝。

HTML屬性和DOM屬性的關(guān)系

  • 少量HTML屬性和DOM屬性之間有著1:1的映射,如id肝劲。
  • 有些HTML屬性沒有對應(yīng)的DOM屬性迁客,如colspan。
  • 有些DOM屬性沒有對應(yīng)的HTML屬性辞槐,如textContent掷漱。
  • 就算名字相同,HTML屬性和DOM屬性也不是同一樣?xùn)|西榄檬。
  • HTML屬性的值指定了初始值切威;DOM屬性的值表示當(dāng)前值。
  • DOM屬性的值可以改變丙号;HTML屬性的值不能改變先朦。
  • 模版綁定是通過DOM屬性和事件來工作的,而不是HTML屬性犬缨。

HTML屬性綁定

基本HTML屬性綁定

<td [attr.colspan]="tableColspan">Something</td>

CSS類綁定

<div class="aaa bbb" [class]="someExpression">something</div>

<div [class.special]="isSpecial">something</div>

<div [ngClass]="{aaa: isA, bbb: isB}">

樣式綁定

<button [style.color]="isSpecial?'red':'green'">RED</button>

<div [ngStyle]="{'font-style': this.canSave?'italic':'normal'}">

雙向綁定

<p>
  bind works!
</p>
<input [(ngModel)]="name">
{{name}}

響應(yīng)式編程

觀察者模式與Rxjs

var subscription = Observable.from([1,2,3,4])
    .filter((e) => e%2 == 0)
    .map((e) => e*e)
    .subscribe(
        e => console.log(e),
        error => consile.error(error),
        () => console.log("end!")
    );
  • 可觀察對象Observable(流):表示一組值或者事件的集合喳魏。
  • 觀察者Observer:一個回調(diào)函數(shù)集合,它知道怎么去監(jiān)聽被Observable發(fā)送的值怀薛。
  • 訂閱Subscription:表示一個可觀察對象刺彩,主要用于取消注冊。
  • 操作符Operators:純粹的函數(shù)枝恋,使開發(fā)者可以以函數(shù)編程的方式處理集合创倔。

簡單來說響應(yīng)式編程就是異步數(shù)據(jù)流編程。

模版本地變量

<p>
  bind works!
</p>
<input #myField (keyup)="onKey(myField.value)">
{{value}}

模版本地變量必須使用#號來聲明焚碌,也就是這里的#myField畦攘。這樣的話方法就不用再傳遞event對象了。

管道

<p>
  bind works!
</p>
<p>我的生日是:{{birthday | date | uppercase}}</p>

在組件中添加birthday元素十电。

private birthday: Date = new Date();

通常我們需要使用管道實現(xiàn)對數(shù)據(jù)的格式化知押,Angular4中的管道和之前有了一些變化,下面說一些常用的管道鹃骂。

大小寫轉(zhuǎn)換管道

uppercase將字符串轉(zhuǎn)換為大寫
lowercase將字符串轉(zhuǎn)換為小寫

<p>將字符串轉(zhuǎn)換為大寫{{str | uppercase}}</p>
str:string = 'hello';

頁面上會顯示
將字符串轉(zhuǎn)換為大寫HELLO

日期管道

date日期管道符可以接受參數(shù)台盯,用來規(guī)定輸出日期的格式。

<p>現(xiàn)在的時間是{{today | date:'yyyy-MM-dd HH:mm:ss'}}</p>
today:Date = new Date();

頁面上會顯示現(xiàn)在的時間是2017年05月08日10時57分53秒

小數(shù)管道

number管道用來將數(shù)字處理為我們需要的小數(shù)格式
接收的參數(shù)格式為{最少整數(shù)位數(shù)}.{最少小數(shù)位數(shù)}-{最多小數(shù)位數(shù)}
其中最少整數(shù)位數(shù)默認(rèn)為1
最少小數(shù)位數(shù)默認(rèn)為0
最多小數(shù)位數(shù)默認(rèn)為3
當(dāng)小數(shù)位數(shù)少于規(guī)定的{最少小數(shù)位數(shù)}時畏线,會自動補(bǔ)0
當(dāng)小數(shù)位數(shù)多于規(guī)定的{最多小數(shù)位數(shù)}時静盅,會四舍五入

<p>圓周率是{{pi | number:'2.2-4'}}</p>
pi:number = 3.14159;

頁面上會顯示
圓周率是03.1416

貨幣管道

currency管道用來將數(shù)字轉(zhuǎn)換為貨幣格式

<p>{{a | currency:'USD':false}}</p>
<p>{{b | currency:'USD':true:'4.2-2'}}</p>
a:number = 8.2515
b:number = 156.54812

頁面上將顯示
USD8.25
0156.55這里的′USD′是美元UnitedStatesdollar的縮寫,當(dāng)為false時不顯示0156.55這里的′USD′是美元UnitedStatesdollar的縮寫寝殴,當(dāng)為false時不顯示符蒿叠,當(dāng)為true時,則顯示$符杯矩。后面的規(guī)定小數(shù)位數(shù)的參數(shù)和上面介紹的一樣栈虚。

自定義管道

創(chuàng)建pipe組件ng g pipe pipe/multiple

multiple.pipe.ts

import {Pipe, PipeTransform} from '@angular/core';

@Pipe({
  name: 'multiple'
})
export class MultiplePipe implements PipeTransform {

  transform(value: number, args?: number): any {
    if (!args) {
      args = 1;
    }
    return value * args;
  }

}

使用自己編寫的管道。

<p>
  bind works!
</p>
<input #myField (keyup)="onKey(myField.value)">
<p>這是我輸入的值:{{value | multiple}}</p>

這時的默認(rèn)系數(shù)是1史隆,將系數(shù)改為3魂务。

<p>
  bind works!
</p>
<input #myField (keyup)="onKey(myField.value)">
<p>這是我輸入的值:{{value | multiple: '3'}}</p>

這樣每次輸出的值都是乘后的值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末泌射,一起剝皮案震驚了整個濱河市粘姜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌熔酷,老刑警劉巖孤紧,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拒秘,居然都是意外死亡号显,警方通過查閱死者的電腦和手機(jī)臭猜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來押蚤,“玉大人蔑歌,你說我怎么就攤上這事±康猓” “怎么了次屠?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雳刺。 經(jīng)常有香客問我劫灶,道長,這世上最難降的妖魔是什么掖桦? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任本昏,我火速辦了婚禮,結(jié)果婚禮上滞详,老公的妹妹穿的比我還像新娘凛俱。我一直安慰自己,他們只是感情好料饥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布蒲犬。 她就那樣靜靜地躺著,像睡著了一般岸啡。 火紅的嫁衣襯著肌膚如雪原叮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天巡蘸,我揣著相機(jī)與錄音奋隶,去河邊找鬼。 笑死悦荒,一個胖子當(dāng)著我的面吹牛唯欣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搬味,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼境氢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了碰纬?” 一聲冷哼從身側(cè)響起萍聊,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悦析,沒想到半個月后寿桨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡强戴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年亭螟,在試婚紗的時候發(fā)現(xiàn)自己被綠了挡鞍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡媒佣,死狀恐怖匕累,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情默伍,我是刑警寧澤娱节,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布辞居,位于F島的核電站,受9級特大地震影響掀虎,放射性物質(zhì)發(fā)生泄漏羡宙。R本人自食惡果不足惜狸剃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狗热。 院中可真熱鬧钞馁,春花似錦、人聲如沸匿刮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熟丸。三九已至训措,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間光羞,已是汗流浹背绩鸣。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留纱兑,地道東北人呀闻。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像潜慎,于是被迫代替她去往敵國和親捡多。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354