亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Home Web Front-end Vue.js How to implement a collapsible list using Vue?

How to implement a collapsible list using Vue?

Jun 25, 2023 am 08:45 AM
vue list Foldable

Vue is a popular JavaScript library that is widely used in the field of web development. In Vue, we can easily implement various components and interactive effects. Among them, the collapsible list is a more practical component. It can group list data to improve the readability of data display. At the same time, it can be expanded when specific content needs to be expanded, making it convenient for users to view detailed information. This article will introduce how to use Vue to implement a collapsible list.

  1. Preparation work

Before using Vue to implement a collapsible list, we need to prepare the following work:

1.1 Vue environment: Install Vue. js, which can be imported through official website download or CDN introduction.

1.2 Data preparation: Prepare the data to be displayed, which can be an array or object. Each item contains the title and content of the displayed data.

  1. HTML Structure

Our collapsible list mainly consists of two parts, one is the title part that displays the list, and the other is the part that displays the content of the list. Among them, the title part needs to set the click event to trigger the expansion and collapse of the content part. Therefore, we can use Vue's v-for instruction to loop through the rendering list and bind the click event at the same time, as shown below:

<template>
  <div>
    <ul>
      <li v-for="(item,index) in dataList" :key="index" @click="toggle(index)">
        {{ item.title }}
      </li>
    </ul>
    <div v-for="(item,index) in dataList" :key="index">
      <div v-show="item.show">{{ item.content }}</div>
    </div>
  </div>
</template>

In this code, we use a wrapping element that contains a ul and A set of divs. Among them, multiple li's in the title part are rendered in ul, and the content of each li is item.title. The expanded content corresponding to each li is controlled by the v-show instruction. When item.show is true, the expanded content will be displayed.

  1. JavaScript Logic

Next, we need to write some JavaScript logic to implement the function of the collapsible list. The specific steps are as follows:

3.1 Define data Structure

Our data should include two parts, one is the title of the list, and the other is the corresponding content of the list. Therefore, we can define a data structure as follows:

data() {
  return {
    dataList: [
      {
        title: "列表標(biāo)題1",
        content: "列表1的詳細(xì)內(nèi)容",
        show: false,
      },
      {
        title: "列表標(biāo)題2",
        content: "列表2的詳細(xì)內(nèi)容",
        show: false,
      },
      {
        title: "列表標(biāo)題3",
        content: "列表3的詳細(xì)內(nèi)容",
        show: false,
      },
    ],
  };
},

Among them, the show parameter is used to control whether the expanded part is displayed. Initially, we want the expanded parts to be closed, so we set the show value to false.

3.2 Click to switch the expanded state

We need to bind the click event to the li element in the title part to achieve the click expand/collapse effect. We can switch the expansion state corresponding to each list by calling the toggle method. The specific code is as follows:

methods: {
  toggle(index) {
    const item = this.dataList[index];
    item.show = !item.show;
  },
},

In the toggle method, we get the current list item item and control the expansion content by modifying the show parameter. Show and hide.

  1. Style settings

Finally, we need to style the list so that it can be displayed more beautifully.

li {
  background: #eee;
  padding: 10px;
  margin-bottom: 10px;
  cursor: pointer;
}

li:hover {
  background: #ccc;
}

div {
  padding: 10px;
}

In CSS, we style each li element. We also changed the background color on mouse hover. The style of the expanded content section has also been set simply.

At this point, we have completed the implementation of the collapsible list. The complete code is as follows:

<template>
  <div>
    <ul>
      <li v-for="(item,index) in dataList" :key="index" @click="toggle(index)">
        {{ item.title }}
      </li>
    </ul>
    <div v-for="(item,index) in dataList" :key="index">
      <div v-show="item.show">{{ item.content }}</div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dataList: [
        {
          title: "列表標(biāo)題1",
          content: "列表1的詳細(xì)內(nèi)容",
          show: false,
        },
        {
          title: "列表標(biāo)題2",
          content: "列表2的詳細(xì)內(nèi)容",
          show: false,
        },
        {
          title: "列表標(biāo)題3",
          content: "列表3的詳細(xì)內(nèi)容",
          show: false,
        },
      ],
    };
  },
  methods: {
    toggle(index) {
      const item = this.dataList[index];
      item.show = !item.show;
    },
  },
};
</script>

The above is the detailed content of How to implement a collapsible list using Vue?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1488
72
What is the significance of Vue's reactivity transform (experimental, then removed) and its goals? What is the significance of Vue's reactivity transform (experimental, then removed) and its goals? Jun 20, 2025 am 01:01 AM

ReactivitytransforminVue3aimedtosimplifyhandlingreactivedatabyautomaticallytrackingandmanagingreactivitywithoutrequiringmanualref()or.valueusage.Itsoughttoreduceboilerplateandimprovecodereadabilitybytreatingvariableslikeletandconstasautomaticallyreac

How to combine two lists in python? How to combine two lists in python? Jun 30, 2025 am 02:04 AM

There are many ways to merge two lists, and choosing the right way can improve efficiency. 1. Use number splicing to generate a new list, such as list1 list2; 2. Use = to modify the original list, such as list1 =list2; 3. Use extend() method to operate on the original list, such as list1.extend(list2); 4. Use number to unpack and merge (Python3.5), such as [list1,*list2], which supports flexible combination of multiple lists or adding elements. Different methods are suitable for different scenarios, and you need to choose based on whether to modify the original list and Python version.

What are lists in Python, and how do I create them? What are lists in Python, and how do I create them? Jun 20, 2025 am 12:45 AM

In Python, a list is an ordered, variable data structure for storing multiple related values. 1. The list is defined in square brackets and elements are separated by commas, for example: fruits=["apple","banana","cherry"]. 2. Lists support multiple creation methods, including manual input, loop generation or conversion of other data types. 3. Lists are suitable for scenarios where maintenance order, frequent modification or processing of multiple data items. 4. Use index to access the element, such as my_list[0] to get the first element, and my_list[-1] to get the last element. 5. If you do not need to modify the content, it is recommended to use it.

How can internationalization (i18n) and localization (l10n) be implemented in a Vue application? How can internationalization (i18n) and localization (l10n) be implemented in a Vue application? Jun 20, 2025 am 01:00 AM

InternationalizationandlocalizationinVueappsareprimarilyhandledusingtheVueI18nplugin.1.Installvue-i18nvianpmoryarn.2.CreatelocaleJSONfiles(e.g.,en.json,es.json)fortranslationmessages.3.Setupthei18ninstanceinmain.jswithlocaleconfigurationandmessagefil

What are the benefits of using key attributes (:key) with v-for directives in Vue? What are the benefits of using key attributes (:key) with v-for directives in Vue? Jun 08, 2025 am 12:14 AM

Usingthe:keyattributewithv-forinVueisessentialforperformanceandcorrectbehavior.First,ithelpsVuetrackeachelementefficientlybyenablingthevirtualDOMdiffingalgorithmtoidentifyandupdateonlywhat’snecessary.Second,itpreservescomponentstateinsideloops,ensuri

How can you optimize the re-rendering of large lists or complex components in Vue? How can you optimize the re-rendering of large lists or complex components in Vue? Jun 07, 2025 am 12:14 AM

Methods to optimize the performance of large lists and complex components in Vue include: 1. Use the v-once directive to process static content to reduce unnecessary updates; 2. implement virtual scrolling and render only the content of the visual area, such as using the vue-virtual-scroller library; 3. Cache components through keep-alive or v-once to avoid duplicate mounts; 4. Use computed properties and listeners to optimize responsive logic to reduce the re-rendering range; 5. Follow best practices, such as using unique keys in v-for, avoiding inline functions in templates, and using performance analysis tools to locate bottlenecks. These strategies can effectively improve application fluency.

How can v-model be used for two-way data binding on custom components in Vue? How can v-model be used for two-way data binding on custom components in Vue? Jun 06, 2025 am 11:41 AM

To use v-model to implement two-way binding of custom components in Vue, you must first understand its working mechanism. For custom components, you need: 1. Receive a prop named modelValue; 2. Trigger an event named update:modelValue. By default, it will be parsed to, so the component needs to use:value="modelValue" and $emit('update:modelValue') to synchronize the data. In addition, the prop and event names can be customized via model:{prop:'checked',event:'change'}, which are suitable for different types of components such as switches

What is server side rendering SSR in Vue? What is server side rendering SSR in Vue? Jun 25, 2025 am 12:49 AM

Server-siderendering(SSR)inVueimprovesperformanceandSEObygeneratingHTMLontheserver.1.TheserverrunsVueappcodeandgeneratesHTMLbasedonthecurrentroute.2.ThatHTMLissenttothebrowserimmediately.3.Vuehydratesthepage,attachingeventlistenerstomakeitinteractive

See all articles