搜尋
首頁web前端Vue.jsVue.js實戰入門:如何對陣列和物件進行循環

Vue.js實戰入門:如何對陣列和物件進行循環

上一節中(課程第三部分) 我們學習如何使用v-ifv -show 進行條件渲染。本節我們將學習如何對陣列和物件進行循環,除此之外,我們還將應用先前所學的一些概念。

v-for

v-for 是Vue 的基本指令之一,一旦你學會如何使用它,你就可以在你的程式中加入更多功能。

簡單的來說,v-for 就是一個 for 迴圈。如果你還不知道什麼是for 迴圈的話,for 迴圈其實是一段程式碼,程式碼內每一個元素都會被執行一次,而這些元素通常是一個Array (數組)Object(物件)

今天,我們要從頭開始,這樣我們所做的一切都有一個明確的目的。下面是我們的 index.html 檔案的基本結構,你可以將它複製並貼上到編輯器中。



  <title>Vue 101</title>



  <div>

  </div>

  <script></script>

  <script>
    const app = new Vue({
      el: &#39;#app&#39;,
      data: {

      },
      methods: {

      }
    });
  </script>


讓我們先建立一個簡單的數組,這樣我們就可以使用循環輸出數組裡的內容。我們將在 data 物件中建立一個屬性,叫做 games。當然,你也可以取一個自己喜歡的名字???。

data: {
  games: [
    'Super Mario 64',
    'The Legend of Zelda Ocarina of Time',
    'Secret of Mana',
    'Super Metroid'
  ]
},

現在我們已經設定好了數組,讓我們建立一個簡單的 <ul></ul> 標籤來顯示它。

<div id="app">
  <ul>
    <li>Game title here</li>
  </ul>
</div>

看起來很不錯! 現在我們要告訴Vue,我們要透過循環數組在<ul></ul> 中輸出盡可能多的<li>標籤。

在其他語言中,你可能已經習慣了這樣來循環輸出<li> 標籤:

<?php foreach ($game in $games): ?>
  <li><?php echo $game; ?></li>
<?php endforeach; ?>

將需要循環輸出的<li> 標籤包裹在迴圈中。

但是在 Vue 中,我們可以將 v-for 指令宣告在我們要循環的標籤上。首先在你的 <li> 標籤中做下面這些修改,之後我們再來一步一步分析。

<ul>
  <li v-for="game in games">{{ game }}</li>
</ul>

讓我們來詳細分析一下:

    <li>

    v-for 指令是直接加在<li>#標籤中,而不是我們前面看到的<ul></ul> 標籤。這樣寫的原因是:「給我們games 數組中的每一個game 都創建一個<li> 標籤。

    <li>

    <li>

    <li>

    #注意,
games

是我們前面在data 中加入的屬性,所以我們要用這個變數名稱。

##game 這個變數(單數)是由我們自己定義的,我們可以用item

gametitle 或其他我們覺得合適的名稱。但是一定要明白,這個game

是你在循環裡面要用的變數。

最後,在我們的

<li> 標籤裡面,我們要輸出game 變數的內容,所以當我們循環運行的時候,將會依序把games 陣列中的字串輸出到< ;li> 標籤中。

在瀏覽器內打開我們的

index.html

文件,你應該會看到
    games<li> 陣列內的內容被輸出到螢幕上。

    提升點難度 到目前為止,還不錯吧?v-for實際上是一個非常簡單的概念,但是這個例子太無聊了。讓我們把事情變得更複雜有趣一點,在我們的數組中包含一些對象,並配合著v-if

    使用,怎麼樣?######首先,我們用一些更有趣的數據來更新我們的###games### 屬性。###
    data: {
      games: [
        { name: &#39;Super Mario 64&#39;, console: &#39;Nintendo 64&#39;, rating: 4 },
        { name: &#39;The Legend of Zelda Ocarina of Time&#39;, console: &#39;Nintendo 64&#39;, rating: 5 },
        { name: &#39;Secret of Mana&#39;, console: &#39;Super Nintendo&#39;, rating: 4 },
        { name: &#39;Fallout 76&#39;, console: &#39;Multiple&#39;, rating: 1 },
        { name: &#39;Super Metroid&#39;, console: &#39;Super Nintendo&#39;, rating: 6 }
      ]
    },
    ###如果你現在運行我們的程序,它不會出錯,但它只會以字串的格式輸出###games### 裡的對象,這不太美觀。事實上,我們要徹底刪掉我們的###
      ### 標籤,用###
      ### 標籤來輸出我們的訊息。(別擔心,用了div 還是會很難看?)#######將整個###
      <li>

      看看 <h1></h1> 标签. 因为 game 是一个对象,而这个对象里又有自己的 nameconsolerating 属性。在 <h1></h1> 里面,我们要输出 game 内的 game.namegame.console。正如你现在所看到的那样,v-for 并不像我们之前只输出 <li> 标签,实际上你可以根据你的需要输出不同的 HTML 标签。

      <li>

      嵌套的 v-for。在 span 标签里面,我们有一个嵌套的 v-for 循环(这完全是可以的),只是有点不同,在这里我们没有循环数组或对象。而是循环了一个数值(在本例中是 game.rating,循环将根据 game.rating 的值开始计数,然后输出对应数量的❤️。很简单吧?)

      <li>

      最后是 v-if。我们要在循环中输出一个 <div> 标签,只有当前 <code>game.rating 的值大于 5 时,才会输出一个<div>标签。<p>来吧,在浏览器中继续运行我们的 <code>index.html 文件。

      每次循环时可不可以不使用 DIV ?

      如果你发现写了一大堆 <div> 标签只是为了用 <code>v-for 循环,那么可以使用 <template> template></template> 这个特殊的 HTML 标签帮助你解决这个问题。

      现在将带有 v-for 指令的 <div> 标签改成 <code><template></template> 标签,然后打开你的开发者控制台,你会发现 <h1></h1><span></span> 标签没有被任何东西包裹。

      <template></template> 很特别,因为 Vue 会把它当作一个只用来封装的标签,当我们执行的时候,它不会被渲染到 HTML 中,所以你可以安全地用它来封装一堆其他元素,而不影响你整体的 HTML 结构。

      :key 属性

      最后一件事::key属性。我特意留到了最后来讲解。

      当你用 v-for 循环时,Vue 不知道如何追踪每个元素,因为它不能将对象区别开来。这意味着 Vue 将重新渲染循环创建的整个部分。在我们的例子中,v-for 只是一个很小的部分,性能损失很小,但这些你应该牢记住。

      现在,我们该如何使用它呢?

      :key 接收字符串或数字来 “命名” 或 “追踪” 这个元素,所以我们需要给它一个唯一的标识符。对于我们的 games 来说,很简单,我们可以这样做:

      <div v-for="game in games" :key="game.name">

      我很确定,我们不会在这个列表中出现两次相同的 game 对象,所以这是相当安全的。如果你有来自数据库的数据,一个唯一的 id 在这里使用也很好。

      如果你对 :key 的原理很好奇,你可以看看文档 Key的文档

      既然你已经了解了这么多,我就再强调下文档的重要性。 Vue 的文档非常出色,文档团队在保持更新和清晰性方面做了很多努力并且通过代码示例把每个部分都解释的非常清楚。

      最终代码

      以防万一,这是最终的代码:

      
      
      
        Vue 101
      
      
      
      
      <div v-for="game in games" :key="game.name">

      {{ game.name }} - {{ game.console }}

      ❤️
      Wow, this game must be REALLY good
      <script> const app = new Vue({ el: &#39;#app&#39;, data: { games: [ { name: &#39;Super Mario 64&#39;, console: &#39;Nintendo 64&#39;, rating: 4 }, { name: &#39;The Legend of Zelda Ocarina of Time&#39;, console: &#39;Nintendo 64&#39;, rating: 5 }, { name: &#39;Secret of Mana&#39;, console: &#39;Super Nintendo&#39;, rating: 4 }, { name: &#39;Fallout 76&#39;, console: &#39;Multiple&#39;, rating: 1 }, { name: &#39;Super Metroid&#39;, console: &#39;Super Nintendo&#39;, rating: 6 } ] } }); </script>

      小测验

      请在 <span></span> 标签中添加一个 @click 事件,使它每次点击就会增加一个❤️。

      提示: 你需要将正在循环的 game 对象传递给点击方法。

      原文地址:https://dev.to/marinamosti/hands-on-vuejs-for-beginners-part-4-324l

      译文地址:https://www.php.cn/link/5a13fe4ac11f3e35f4b9f0a99cf504c0

      (学习视频分享:web前端开发编程基础视频

以上是Vue.js實戰入門:如何對陣列和物件進行循環的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
Vue常见面试题汇总(附答案解析)Vue常见面试题汇总(附答案解析)Apr 08, 2021 pm 07:54 PM

本篇文章给大家分享一些Vue面试题(附答案解析)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

5 款适合国内使用的 Vue 移动端 UI 组件库5 款适合国内使用的 Vue 移动端 UI 组件库May 05, 2022 pm 09:11 PM

本篇文章给大家分享5 款适合国内使用的 Vue 移动端 UI 组件库,希望对大家有所帮助!

vue中props可以传递函数吗vue中props可以传递函数吗Jun 16, 2022 am 10:39 AM

vue中props可以传递函数;vue中可以将字符串、数组、数字和对象作为props传递,props主要用于组件的传值,目的为了接收外面传过来的数据,语法为“export default {methods: {myFunction() {// ...}}};”。

手把手带你利用vue3.x绘制流程图手把手带你利用vue3.x绘制流程图Jun 08, 2022 am 11:57 AM

利用vue3.x怎么绘制流程图?下面本篇文章给大家分享基于 vue3.x 的流程图绘制方法,希望对大家有所帮助!

聊聊vue指令中的修饰符,常用事件修饰符总结聊聊vue指令中的修饰符,常用事件修饰符总结May 09, 2022 am 11:07 AM

本篇文章带大家聊聊vue指令中的修饰符,对比一下vue中的指令修饰符和dom事件中的event对象,介绍一下常用的事件修饰符,希望对大家有所帮助!

如何覆盖组件库样式?React和Vue项目的解决方法浅析如何覆盖组件库样式?React和Vue项目的解决方法浅析May 16, 2022 am 11:15 AM

如何覆盖组件库样式?下面本篇文章给大家介绍一下React和Vue项目中优雅地覆盖组件库样式的方法,希望对大家有所帮助!

通过9个Vue3 组件库,看看聊前端的流行趋势!通过9个Vue3 组件库,看看聊前端的流行趋势!May 07, 2022 am 11:31 AM

本篇文章给大家分享9个开源的 Vue3 组件库,通过它们聊聊发现的前端的流行趋势,希望对大家有所帮助!

react与vue的虚拟dom有什么区别react与vue的虚拟dom有什么区别Apr 22, 2022 am 11:11 AM

react与vue的虚拟dom没有区别;react和vue的虚拟dom都是用js对象来模拟真实DOM,用虚拟DOM的diff来最小化更新真实DOM,可以减小不必要的性能损耗,按颗粒度分为不同的类型比较同层级dom节点,进行增、删、移的操作。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。