編寫 [委派監聽-互動視窗] 流程 Part.2

Barry YU
4 min readJul 14, 2020

--

本章節重點是

1. 如何設定委派監聽 ” 去判斷點擊到物件是否包含到指定電影的“ 按鈕 ”

2 . 當按鈕的點擊事件了,但是,該怎麼知道被點擊的電影 ID 是什麼呢?

Step1. 分析問題 ( 續 part 2)

清單及搜尋已經完成後, 使用者需要知道電影介紹內容.

經團隊討論後, 增加點擊按鈕會彈跳出新視窗並顯示 「電影詳細內容介紹 」

Step2 . 拆解問題:

  1. 跳出視窗顯示出 ( Part 1 .已完成 )
  2. 該如何在API取得的上百部電影, 每一個按鈕都增設監聽器?

3. 如何從彈跳出視窗內有電影詳細內容 ?

Step3. 尋找答案 及方法:

  1. 在DOM 插入的內容新增“ 按鈕 ” , ( part 1已完成)
  2. 引入 Bootstrap 的 Modal 元件製作互動視窗 (Part1已完成)
  3. 使用事件委派 (event delegation) 是在API的電影清單設定監聽, 當觸發事件時會確認是否與按鈕相同(本篇實作)
  4. 運用 dataset 將特定資訊標註到 HTML 標籤上,再用 JavaScript 取出(本篇實作)
  5. 用 axios 發送請求將取得 API 資料,放進 template 的適當位置裡(本篇實作)

STEP4.製作出自己的編寫流程

此次會有兩次框架要製作 及新增修改

此次為續Part1 互動視窗 , 此篇為part2 在互動視窗可以看到

Step 1. 編寫監聽器 , 並用console.log ( event. target ) 確認是誰觸發

step 2. 設定DataSet

step 3.

前置框架 ( part . 2): 委派監聽及API串接

  • 繪製區塊
  • FIGMA 做流程圖示

設委派監聽器

由父元素來集中委派事件 (event delegation)

在 #Data-panel , 「 粉紫紅區塊 」稱它為: 『 不會變動的父元素 』

dataPanel.addEventListener('click', (event) => { } 

透過按鈕MORE 去觸發 Click , 條件如果事件目標就是MORE

dataPanel.addEventListener('click', (event) => {
//who trigger it [ more ] //
if (event.target.matches('.btn-show-movie')) {console.log(event.target)}

取出特定電影的 id 資訊

針對results的id

API :

{
"results": {
"id": 1,
"title": "Jurassic World: Fallen Kingdom",
"genres": [
1,
2,
15
],
"description": "Several years after the demise of Jurassic World, a volcanic eruption threatens the remaining dinosaurs on the
"release_date": "2018-06-06",
"image": "c9XxwwhPHdaImA2f1WEfEsbhaFB.jpg",
"director": "Juan Antonio Bayona",
"cast": [
{
"character": "Owen Grady",
"name": "Chris Pratt" } }

一個id 指定一個頁面 .

https://movie-list.alphacamp.io/movies/:id

委派監聽已將 event.target.matches ( ' btn ..... ‘) 指定到 More按鈕.

將電影的 id 一併放進 template 裡。

當按鈕被點擊時,就能把 id 挑出來然後組合出 Show API 需要的 URL

待續…..這篇真的較複雜..

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response