목차
v-model의 마법
你好奇input事件是什么?
组件中的v-model
组件的v-model 生效原则
给组件绑定v-model
입력이벤트가 무엇인지 궁금하시죠?
컴포넌트의 v-model 유효성 원칙
v-model을 구성 요소에 바인딩
웹 프론트엔드 JS 튜토리얼 구성 요소의 v-model 인스턴스에 대한 자세한 설명

구성 요소의 v-model 인스턴스에 대한 자세한 설명

Jun 26, 2017 am 10:36 AM
v-model 알다 구성 요소

v-model의 마법


html

<div id="app">
 <input v-model="poin">
  {{ poin }}</div>
로그인 후 복사

js

new Vue({
  el:&#39;#app&#39;,
  data:{poin:&#39;zqz&#39;
  }})
로그인 후 복사

입력한 값이 변경되면 데이터의 포인트 값도 변경됩니다.

이론적으로는 데이터의 값이 변경되면 이벤트가 발생하는데 우리가 그걸 못 봤다고요?

사실 vue 문서에 명시되어 있습니다:

<input v-model="something">
로그인 후 복사

는 아래 구문 설탕입니다

<input v-bind:value="something" v-on:input="something = $event.target.value">
로그인 후 복사

입력할 때마다 input 이벤트가 트리거되고 입력이 바인딩됩니다. 함수를 인라인하여 무언가의 값을 변경합니다. input事件,input绑定了内联函数,从而改变了something的值。

你好奇input事件是什么?

<input><textarea> 元素的值更改时,DOM input 事件会同步触发。(对于 type = checkbox 或 type = radio 的输入元素,当用户单击控件时,输入事件不会触发,因为value属性不会更改。) 此外,当内容更改时,它会在 contenteditable 的编辑器上触发。在这种情况下,事件目标是编辑主机元素。如果有两个或多个具有 contenteditable 的元素为真,“编辑主机”是其父级不可编辑的最近的祖先元素。同样,它也会在 designMode 编辑器的根元素上触发。

具体见:MDN的input事件

组件中的v-model


组件的v-model 生效原则

  • 接受一个value 属性

  • 在有新的value 时触发 input 事件

我们先看一下代码

el-input.vue

<template>

    <div>
      <p>input的封装</p>
      <input type="text"
             ref="input"
             :value="value"
             @input="updateValue($event.target.value)"
             @focus="selectAll"
             >
    </div>

</template>
<script>

export default {
  name: &#39;el-input&#39;,
  props: {
    value: {
      type: Number,
      default: 0
    },
  },
  methods: {
    // 每次都会加一
    updateValue (value) {
      this.$refs.input.value = value + 1;
    },
    selectAll(event) {
      setTimeout(function () {
        event.target.select()
      }, 0)
    }
  }
}

</script>
<style>
</style>
로그인 후 복사

将这个组件在Tom.vue中使用

<style>
</style>
<template>
    <!-- 在父组件中使用 -->
    <div>
      <v-el-input></v-el-input>
    </div>

</template>
<script>
import vElInput from &#39;./el-input.vue&#39;

export default {
  name: &#39;tom&#39;,
  components: {
    vElInput
  }
}

</script>
로그인 후 복사

구성 요소의 v-model 인스턴스에 대한 자세한 설명

每次使用的时候都会在后面加个1

但是问题来了,我们要如何在Tom.vue中取到这个值呢?

  • 方法一:使用事件 但是感觉有点曲线救国

  • 方法二:使用v-model

这里就体现出了v-model的强大了,因为上面的语法糖,自动的绑定了input事件。所以我们可以利用这个特性去做些事情。

给组件绑定v-model

将Tom.vue的代码修改一下

<template>
    <!-- 在父组件中使用 -->
    <div>
      <v-el-input v-model="eleValue"></v-el-input>
      eleValue的值:{{ this.eleValue }}
    </div>

</template>
<script>
import vElInput from &#39;./el-input.vue&#39;

export default {
  name: &#39;tom&#39;,
  components: {
    vElInput
  },
  data () {
    return {
      eleValue: 666 //设置一个默认值
    }
  }
}

</script>
로그인 후 복사

初始状态
구성 요소의 v-model 인스턴스에 대한 자세한 설명

输入后的状态구성 요소의 v-model 인스턴스에 대한 자세한 설명

然后当我们输入的值发生变化的时,我们预想的eleValue依旧没有发生变化,而el-input.vue中的value确发生了变化

也是就是说value发生变化后没有传递(同步)到父组件中,这也就是vue1中的.sync的用处,而在vue2中已经废弃了。

修改el-input.vue代码,增加this.$emit(&#39;input&#39;, value*1)

입력이벤트가 무엇인지 궁금하시죠?

<input> 또는 <textarea> 요소의 값이 변경되면 DOM 입력 이벤트가 동기적으로 트리거됩니다. (type = checkbox 또는 type = radio인 입력 요소의 경우 value 속성이 변경되지 않기 때문에 사용자가 컨트롤을 클릭해도 입력 이벤트가 실행되지 않습니다.) 또한 콘텐츠가 변경되면 contenteditable의 편집기에서 실행됩니다. 이 경우 이벤트 대상은 편집 호스트 요소입니다. contenteditable이 true인 요소가 두 개 이상 있는 경우 "편집 호스트"는 상위 요소를 편집할 수 없는 가장 가까운 상위 요소입니다. 마찬가지로 designMode 편집기의 루트 요소에서도 실행됩니다.
자세한 내용은 MDN의 입력 이벤트를 참조하세요.

컴포넌트의 v-model🎜🎜

컴포넌트의 v-model 유효성 원칙

    < li>🎜 속성을 ​​수락합니다🎜
  • 🎜새 이 있는 경우 입력 이벤트를 트리거합니다. 🎜
🎜먼저 코드를 살펴보겠습니다🎜🎜el-input.vue🎜
...updateValue (value) {  this.$refs.input.value = value + 1;  // 触发组件上绑定的input事件,以实现value同步  this.$emit(&#39;input&#39;, value*1)},...
로그인 후 복사
🎜Tom.vue에서 이 구성 요소를 사용하세요🎜rrreee🎜구성 요소의 v-model 인스턴스에 대한 자세한 설명🎜🎜사용할 때마다 끝에 1이 추가됩니다🎜🎜하지만 문제는 이 값을 어떻게 구하느냐는 것입니다. Tom.vue에서? 🎜
  • 🎜방법 1: 이벤트를 사용하지만 나라를 구하기에는 약간 휘어진 느낌🎜
  • 🎜방법 2: v-model 사용🎜 ul>🎜위의 구문 설탕이 자동으로 input 이벤트를 바인딩하기 때문에 v-model의 강력한 기능이 여기에 반영됩니다. 그래서 우리는 이 기능을 사용하여 뭔가를 할 수 있습니다. 🎜

    v-model을 구성 요소에 바인딩

    🎜Tom.vue🎜rrreee🎜초기 상태 코드 수정
    구성 요소의 v-model 인스턴스에 대한 자세한 설명🎜🎜입력 후 상태구성 요소의 v-model 인스턴스에 대한 자세한 설명🎜🎜그런 다음 입력한 값이 변경되면 예상한 eleValue는 변경되지 않고 el-input.vue의 값도 변경됩니다🎜🎜 즉, 값은 다음과 같습니다. 변경 후 상위 구성 요소로 전송(동기화)되지 않습니다. 이는 vue1에서 .sync의 목적이지만 vue2에서는 폐기되었습니다. 🎜🎜el-input.vue 코드를 수정하고 this.$emit('input', value*1)를 추가하세요.🎜🎜rrreee🎜🎜이렇게 하면 값 동기화 문제가 실현됩니다. 🎜

위 내용은 구성 요소의 v-model 인스턴스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Windows 10 이전 버전 구성 요소 DirectPlay를 설치하는 방법 Windows 10 이전 버전 구성 요소 DirectPlay를 설치하는 방법 Dec 28, 2023 pm 03:43 PM

많은 사용자가 win10에서 일부 게임을 플레이할 때 화면이 멈추거나 화면이 흐려지는 등의 문제에 항상 직면합니다. 이때 다이렉트 플레이 기능을 켜면 문제를 해결할 수 있으며 기능 작동 방법도 매우 간단합니다. 이전 버전의 win10 컴포넌트 다이렉트플레이 설치 방법 1. 검색 상자에 "제어판"을 입력하고 엽니다. 2. 보기 방법으로 큰 아이콘을 선택합니다. 3. "프로그램 및 기능"을 찾습니다. 4. 활성화 또는 활성화하려면 왼쪽을 클릭합니다. Win 기능 끄기 5. 여기에서 이전 버전을 선택하세요. 확인란을 선택하세요.

v-model.number를 사용하여 Vue에서 입력 상자의 데이터 유형 변환을 구현하는 방법 v-model.number를 사용하여 Vue에서 입력 상자의 데이터 유형 변환을 구현하는 방법 Jun 11, 2023 am 08:54 AM

Vue에서 v-model은 양방향 바인딩을 구현하는 데 사용되는 중요한 명령입니다. 이를 통해 사용자 입력을 Vue의 데이터 속성에 쉽게 동기화할 수 있습니다. 하지만 사용자가 입력한 문자열 유형을 숫자 유형으로 변환하는 등 데이터를 변환해야 하는 경우도 있습니다. 이 경우 이를 달성하려면 v-model의 .number 수정자를 사용해야 합니다. v-model.number의 기본 사용법 v-model.number는 v-model의 수정입니다.

Vue를 사용하여 캘린더 구성요소를 구현하는 방법은 무엇입니까? Vue를 사용하여 캘린더 구성요소를 구현하는 방법은 무엇입니까? Jun 25, 2023 pm 01:28 PM

Vue는 매우 인기 있는 프런트 엔드 프레임워크로, 개발자가 효율적이고 유연하며 유지 관리하기 쉬운 웹 애플리케이션을 구축하는 데 도움이 되는 구성 요소화, 데이터 바인딩, 이벤트 처리 등과 같은 많은 도구와 기능을 제공합니다. 이번 글에서는 Vue를 사용하여 캘린더 컴포넌트를 구현하는 방법을 소개하겠습니다. 1. 요구사항 분석 먼저 이 캘린더 구성요소의 요구사항을 분석해야 합니다. 기본 달력에는 다음과 같은 기능이 있어야 합니다. 이번 달의 달력 페이지를 표시하고 특정 날짜를 클릭하여 이전 달 또는 다음 달로 전환할 수 있도록 지원합니다.

VUE3 개발 기본 사항: 확장을 사용하여 구성 요소 상속 VUE3 개발 기본 사항: 확장을 사용하여 구성 요소 상속 Jun 16, 2023 am 08:58 AM

Vue는 현재 가장 인기 있는 프런트엔드 프레임워크 중 하나이며, VUE3은 Vue 프레임워크의 최신 버전입니다. VUE2에 비해 VUE3는 더 높은 성능과 더 나은 개발 경험을 제공하며 많은 개발자의 첫 번째 선택이 되었습니다. VUE3에서는 익스텐트를 사용하여 컴포넌트를 상속하는 것이 매우 실용적인 개발 방법입니다. 이 글에서는 익스텐트를 사용하여 컴포넌트를 상속하는 방법을 소개합니다. 확장이란 무엇입니까? Vue에서 확장은 매우 실용적인 속성으로, 하위 구성 요소가 상위 구성 요소로부터 상속받는 데 사용할 수 있습니다.

Angular 구성 요소 및 해당 표시 속성: 비블록 기본값 이해 Angular 구성 요소 및 해당 표시 속성: 비블록 기본값 이해 Mar 15, 2024 pm 04:51 PM

Angular 프레임워크의 구성 요소에 대한 기본 표시 동작은 블록 수준 요소에 대한 것이 아닙니다. 이 디자인 선택은 구성 요소 스타일의 캡슐화를 촉진하고 개발자가 각 구성 요소가 표시되는 방법을 의식적으로 정의하도록 장려합니다. CSS 속성 표시를 명시적으로 설정하면 Angular 구성 요소의 표시를 완전히 제어하여 원하는 레이아웃과 응답성을 얻을 수 있습니다.

이전 버전의 win10 구성 요소 설정을 여는 방법 이전 버전의 win10 구성 요소 설정을 여는 방법 Dec 22, 2023 am 08:45 AM

Win10 이전 버전 구성요소는 일반적으로 기본적으로 닫혀 있으므로 사용자가 직접 설정해야 합니다. 먼저 작업은 아래 단계를 따르기만 하면 됩니다. 1. 시작을 클릭한 다음 "Win 시스템"을 클릭합니다. 2. 클릭하여 제어판으로 들어갑니다. 3. 그런 다음 아래 프로그램을 클릭합니다. 4. "Win 기능 활성화 또는 끄기"를 클릭합니다. 5. 여기에서 원하는 것을 선택할 수 있습니다. 열기 위해

Vue 컴포넌트 개발: 진행률 표시줄 컴포넌트 구현 방법 Vue 컴포넌트 개발: 진행률 표시줄 컴포넌트 구현 방법 Nov 24, 2023 am 08:56 AM

Vue 구성 요소 개발: 진행률 표시줄 구성 요소 구현 방법 머리말: 웹 개발에서 진행률 표시줄은 데이터 요청, 파일 업로드, 양식 제출과 같은 시나리오에서 작업 진행 상황을 표시하는 데 자주 사용되는 일반적인 UI 구성 요소입니다. Vue.js에서는 컴포넌트를 커스터마이즈하여 진행률 표시줄 컴포넌트를 쉽게 구현할 수 있습니다. 이 기사에서는 구현 방법을 소개하고 구체적인 코드 예제를 제공합니다. Vue.js 초보자에게 도움이 되길 바랍니다. 구성 요소 구조 및 스타일 먼저 진행률 표시줄 구성 요소의 기본 구조와 스타일을 정의해야 합니다.

Vue 오류: 양방향 데이터 바인딩에 v-model을 올바르게 사용할 수 없습니다. 해결 방법은 무엇입니까? Vue 오류: 양방향 데이터 바인딩에 v-model을 올바르게 사용할 수 없습니다. 해결 방법은 무엇입니까? Aug 19, 2023 pm 08:46 PM

Vue 오류: 양방향 데이터 바인딩에 v-model을 올바르게 사용할 수 없습니다. 해결 방법은 무엇입니까? 소개: 양방향 데이터 바인딩은 Vue로 개발할 때 매우 일반적이고 강력한 기능입니다. 그러나 때로는 문제가 발생할 수 있습니다. 즉, 양방향 데이터 바인딩에 v-model을 사용하려고 하면 오류가 발생합니다. 이 문서에서는 이 문제의 원인과 해결 방법을 설명하고 문제 해결 방법을 보여 주는 코드 예제를 제공합니다. 문제 설명: Vue에서 v-model을 사용하려고 할 때

See all articles