Rumah > hujung hadapan web > View.js > teks badan

Penjelasan terperinci tentang cara melaksanakan pengikatan dua hala data menggunakan Vue

青灯夜游
Lepaskan: 2023-04-19 18:49:37
ke hadapan
10696 orang telah melayarinya

Dalam Vue.js, pengikatan data dua hala ialah ciri yang sangat berkuasa yang boleh memastikan data dan paparan disegerakkan, menjadikannya lebih mudah untuk pembangun memanipulasi data. Dalam artikel ini, kami akan memperkenalkan cara melaksanakan pengikatan dua hala data dengan Vue.js.

Penjelasan terperinci tentang cara melaksanakan pengikatan dua hala data menggunakan Vue

1. Memahami pengikatan dua hala

Pertama, kita perlu memahami prinsip pengikatan dua hala. Dalam Vue.js, data dan paparan disambungkan melalui ViewModel (model paparan). Apabila data berubah, ViewModel mengemas kini paparan secara automatik. Apabila paparan berubah, ViewModel akan mengemas kini data secara automatik. [Cadangan berkaitan: tutorial video vuejs, pembangunan bahagian hadapan web]

2 >Vue .js menyediakan arahan model-v untuk melaksanakan pengikatan dua hala data. Arahan model v boleh digunakan untuk mengikat nilai untuk membentuk elemen dan komponen.

Sebagai contoh, menggunakan arahan model v pada elemen input boleh mencapai pengikatan dua hala data:

Dalam contoh di atas, kami menggunakan elemen input untuk mengikat mesej atribut, gunakan {{ mesej }} untuk memaparkan data terikat.

<template>
  <div>
    <input type="text" v-model="message">
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: &#39;Hello, Vue.js!&#39;
    }
  }
}
</script>
Salin selepas log masuk
Apabila kita memasukkan teks, data dan paparan akan dikemas kini secara automatik serentak. Beginilah cara arahan model-v melaksanakan pengikatan data dua hala.

3. Gunakan komponen tersuai untuk mencapai pengikatan dua hala

Selain elemen bentuk, kami juga boleh menggunakan komponen tersuai untuk mencapai pengikatan dua hala data.

Pertama, kita perlu menentukan komponen tersuai dan mengikat data menggunakan arahan v-model. Kemudian, kita perlu mentakrifkan nilai prop bernama dalam komponen dan menggunakan kaedah $emit() dalam komponen untuk mencetuskan peristiwa bernama input. Dengan cara ini, anda boleh menggunakan arahan model-v dalam komponen induk untuk mengikat nilai komponen tersuai.

Sebagai contoh, berikut ialah komponen kotak input nombor tersuai:

Dalam contoh di atas, kami menggunakan elemen input untuk mengikat atribut nilai, dan apabila memasukkan peristiwa bernama input dicetuskan menggunakan kaedah $emit().

<template>
  <div>
    <input type="number" :value="value" @input="$emit(&#39;input&#39;, $event.target.value)">
  </div>
</template>

<script>
export default {
  props: {
    value: {
      type: Number,
      default: 0
    }
  }
}
</script>
Salin selepas log masuk
Kini, kita boleh menggunakan arahan model v dalam komponen induk untuk mengikat nilai komponen tersuai:

Dalam pembangunan bahagian hadapan, pengikatan dua hala data adalah keperluan yang sangat biasa. Sebagai rangka kerja JavaScript yang popular, Vue.js menyediakan cara yang sangat mudah untuk mencapai pengikatan dua hala data. Artikel ini akan memperkenalkan cara Vue.js melaksanakan pengikatan dua hala data.

<template>
  <div>
    <custom-input v-model="count"></custom-input>
    <p>Count: {{ count }}</p>
  </div>
</template>

<script>
import CustomInput from &#39;./CustomInput.vue&#39;

export default {
  components: {
    CustomInput
  },
  data() {
    return {
      count: 0
    }
  }
}
</script>
Salin selepas log masuk

4. Rampasan data

Vue.js menggunakan rampasan data untuk mencapai pengikatan data dua hala. Ia merampas kaedah setter dan getter bagi sifat objek dengan menggunakan kaedah Object.defineProperty() dalam ES5. Dengan cara ini, apabila sifat objek berubah, Vue.js boleh mendengar perubahan dan menyegerakkan perubahan pada paparan.

Sebagai contoh, kita boleh mentakrifkan kelas bernama Person dan kemudian merampas sifatnya melalui kaedah Object.defineProperty():

Dalam kod di atas, kita lulus Object.defineProperty( ) kaedah untuk merampas nama dan atribut umur kelas Orang. Apabila kita menetapkan nilai pada atribut nama objek orang, kaedah penetap dicetuskan dan 'nama tetapan' adalah output Apabila kita membaca atribut nama objek orang, kaedah getter dicetuskan dan 'mendapatkan nama' output dan _name dikembalikan Nilai atribut.

class Person {
  constructor(name, age) {
    this._name = name
    this._age = age
  }

  get name() {
    return this._name
  }

  set name(name) {
    this._name = name
  }

  get age() {
    return this._age
  }

  set age(age) {
    this._age = age
  }
}

let person = new Person(&#39;Tom&#39;, 18)

Object.defineProperty(person, &#39;name&#39;, {
  get() {
    console.log(&#39;getting name&#39;)
    return this._name
  },
  set(name) {
    console.log(&#39;setting name&#39;)
    this._name = name
  }
})

Object.defineProperty(person, &#39;age&#39;, {
  get() {
    console.log(&#39;getting age&#39;)
    return this._age
  },
  set(age) {
    console.log(&#39;setting age&#39;)
    this._age = age
  }
})

person.name = &#39;Jerry&#39;
console.log(person.name)
Salin selepas log masuk

5. Enjin templat

Vue.js menggunakan enjin templat untuk menghuraikan templat DOM dan menjana DOM maya. DOM maya ialah objek JavaScript ringan yang digunakan untuk menerangkan pokok DOM sebenar. Vue.js melaksanakan pengikatan dua hala data dengan beroperasi pada DOM maya.

Sebagai contoh, kita boleh mentakrifkan objek yang mengandungi atribut nama dan umur serta menggunakan enjin templat Vue.js untuk memaparkannya pada halaman:

<div id="app">
  <p>姓名:<input v-model="person.name"></p>
  <p>年龄:<input v-model="person.age"></p>
  <p>您的姓名是:{{ person.name }}</p>
  <p>您的年龄是:{{ person.age }}</p>
</div>
Salin selepas log masuk
6 .Penjelasan terperinci Object.defineProperty()
const app = new Vue({
  el: &#39;#app&#39;,
  data: {
    person: {
      name: &#39;Tom&#39;,
      age: 18
    }
  }
})
Salin selepas log masuk

Prinsip teras Vue.js untuk melaksanakan pengikatan dua hala ialah menggunakan kaedah Object.defineProperty() untuk memantau perubahan data. Kaedah ini menerima tiga parameter iaitu objek, nama atribut dan deskriptor atribut. Kita boleh menggunakan kaedah ini untuk mentakrifkan harta dan melakukan beberapa operasi dalam getter dan setter harta itu.

Langkah-langkah untuk melaksanakan pengikatan dua hala dalam Vue.js adalah seperti berikut:

Buat contoh Vue dan tentukan objek data yang mengandungi data yang memerlukan pengikatan dua hala . Contohnya:

Dalam HTML, pengikatan dua hala data dicapai dengan menggunakan arahan model-v. Contohnya:
javascriptCopy code
var vm = new Vue({
  data: {
    message: &#39;&#39;
  }
})
Salin selepas log masuk
Dalam contoh Vue, gunakan kaedah Object.defineProperty() untuk memantau perubahan dalam sifat mesej dalam objek data, seperti berikut:
htmlCopy code
<input type="text" v-model="message">
Salin selepas log masuk
  1. Dalam kod di atas, kami menggunakan pembolehubah _message bermula dengan garis bawah untuk menyimpan data sebenar. Dalam getter dan setter, kami mendapat dan menetapkan data dengan mengakses _message, dan kami boleh melakukan beberapa operasi dalam setter.

另外,在 Vue.js 中,我们还可以使用 watch方法来监听数据的变化。watch 方法来监听数据的变化。watch 方法接收两个参数,第一个参数是需要监听的属性,第二个参数是回调函数,回调函数会在数据变化时执行。

下面是一个完整的 Vue.js 双向绑定的示例代码:

<div id="app">
  <input type="text" v-model="message">
  <p>您输入的内容是:{{ message }}</p>
</div>
Salin selepas log masuk
var vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    message: &#39;&#39;
  }
})

Object.defineProperty(vm, &#39;message&#39;, {
  get: function () {
    return this._message
  },
  set: function (newValue) {
    this._message = newValue
    console.log(&#39;您输入的内容是:&#39; + this._message)
  }
})
Salin selepas log masuk

在上面的代码中,我们创建了一个 Vue 实例,并且使用 v-model 指令来实现数据的双向绑定。然后,我们使用 Object.defineProperty() 方法来监听数据的变化,并且在 setter 中输出数据到控制台。

通过上面的代码示例,我们可以看到 Vue.js 实现数据的双向绑定非常简单,而且使用起来也非常方便。

(学习视频分享:vuejs入门教程编程基础视频

Atas ialah kandungan terperinci Penjelasan terperinci tentang cara melaksanakan pengikatan dua hala data menggunakan Vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!