---
# System prepended metadata

title: Day07 【牙起來】 繫結2 事件綁定 - 程式面介紹

---

# Day07 【牙起來】 繫結2 事件綁定 - 程式面介紹

繼續前一篇文章綁定成員

不過在此之前我想在遊戲中，替角色添加**攻擊力**屬性

修改 `role.component.ts` 檔案

```typescript=
...

export class RoleComponent implements OnInit {
  name = '初心冒險者';
  hp = 5;
  atk = 1;

  constructor() { }

  ngOnInit(): void {
    setInterval(() => {
      this.hp += 1;
    }, 1000)
  }
}
```

修改 `role.component.html` 樣板

```html=
<h2>角色區塊</h2>
<div>名稱: {{name}}</div>
<div>血量: {{hp}}</div>
<div>攻擊力: {{atk}}</div>
<button>點我增加攻擊力</button>
```

目前畫面上有攻擊力了
我想要透過手動方式來**增加攻擊力**，每點擊一次攻擊力+1
於是有了一顆按鈕，只是目前點擊不會有任何反應

### 事件繫結 Event Binding

#### 滑鼠點擊事件 onClick - `(click)`

我們在程式的class內加上一個 **function**: 增加攻擊力`addAtk()`
實作一個**增加攻擊力的方法**出來

> 其實在這使用 **函式 function** 稱呼其實不準確，正確來說是物件底下的 **方法 method**
> 後面講到Typescript章節時會重新提及，在此請先忽略

修改 `role.component.ts`

```typescript=
...

export class RoleComponent implements OnInit {
  name = '初心冒險者';
  hp = 5;
  atk = 1;

  constructor() { }

  ngOnInit(): void {
    setInterval(() => {
      this.hp += 1;
    }, 1000)
  }

  addAtk() {
    this.atk += 1;
  }
}
```

修改 `role.component.html` 樣板
在`<button>`身上掛上一個`(click)`，代表被點擊時會觸發，等同於Javascript中的`onclick()`事件。讓他點擊之後去觸發程式內的`addAtk()`function

```html=
<h2>角色區塊</h2>
<div>名稱: {{name}}</div>
<div>血量: {{hp}}</div>
<div>攻擊力: {{atk}}</div>
<button (click)="addAtk()">點我增加攻擊力</button>
```

完成結果畫面

![](https://i.imgur.com/zg5AkXS.gif)

當然，`(click)`事件不一定都要綁在`<button>`
也可以綁在`<div>`上玩玩看

#### 鼠標停留事件 onHover - `(mouseEnter)`、`(mouseLeave)`

Javascript的事件有很多種，當然Angular內建的事也有百百種囉

再來做一個小功能
當鼠標遮住玩家名稱時，自動改變顯示的名稱
這時就會用到Angular中的**MouseEnter**、**MouseOver**事件

修改 `role.component.html` 樣板

```html=
<h2>角色區塊</h2>
<div (mouseenter)="changeName1()" (mouseleave)="changeName2()">名稱: {{name}}</div>
<div>血量: {{hp}}</div>
<div>攻擊力: {{atk}}</div>
<button (click)="addAtk()">點我增加攻擊力</button>
```

接著在 `role.component.ts` 的Class中放入以下兩個function
用來**改變玩家名字**的字串

```typescript=
...

  changeName1() {
    this.name = "勇者，你的游標擋到我名字了";
  }

  changeName2() {
    this.name = "謝謝，你很識相。";
  }
```

當網頁偵測到游標停留在 `<div>` 元素區塊上方時，就會去做指定的function

大功告成～
![](https://i.imgur.com/krgemXz.gif)




> 恭喜到這一步，已經學了**48%的Angular**！

