Vue deseni props
aşağı veevents
yukarı. Kulağa basit geliyor, ancak özel bir bileşen yazarken unutması kolay.
Vue 2.2.0'dan itibaren v-modelini ( hesaplanan özelliklere sahip ) kullanabilirsiniz. Bu kombinasyonun bileşenler arasında basit, temiz ve tutarlı bir arayüz oluşturduğunu gördüm:
props
Bileşeninize iletilen herhangi bir reaktif kalır (yani, klonlanmamıştır ve watch
değişiklikler algılandığında yerel bir kopyayı güncellemek için bir işlev gerektirmez ).
- Değişiklikler otomatik olarak üst öğeye gönderilir.
- Çok sayıda bileşenle kullanılabilir.
Hesaplanan özellik ayarlayıcı ve alıcıyı ayrı ayrı tanımlamanıza izin verir. Bu, Task
bileşenin aşağıdaki gibi yeniden yazılmasına izin verir :
Vue.component('Task', {
template: '#task-template',
props: ['list'],
model: {
prop: 'list',
event: 'listchange'
},
computed: {
listLocal: {
get: function() {
return this.list
},
set: function(value) {
this.$emit('listchange', value)
}
}
}
})
Model özelliği tanımlar prop
ile ilişkilidir v-model
, ve olay değişiklikleri yayılacaktır. Daha sonra bu bileşeni üst öğeden aşağıdaki gibi çağırabilirsiniz:
<Task v-model="parentList"></Task>
listLocal
Bilgisayarlı mülkiyet bileşeni içinde basit bir alıcı ve ayarlayıcı arayüz sağlar (özel değişken olmak gibi düşünün). İçinde #task-template
render yapabilirsiniz listLocal
ve reaktif kalacaktır (yani, eğer parentList
değişiklikler yapılırsa Task
bileşeni güncelleyecektir ). Ayrıca değişebilirlistLocal
ayarlayıcıyı (örn. this.listLocal = newList
) ve üst öğeye değişiklik gönderir.
Bu modelin en güzel yanı, listLocal
bir alt öğeye geçebilmenizdir .Task
(kullanım v-model
) değişikliklerin en üst düzey bileşene yayılmasıdır.
Örneğin EditTask
, görev verilerinde bir tür değişiklik yapmak için ayrı bir bileşenimiz olduğunu varsayalım. Aynı v-model
ve hesaplanmış özellikler desenini listLocal
kullanarak bileşene geçebiliriz (kullanarak v-model
):
<script type="text/x-template" id="task-template">
<div>
<EditTask v-model="listLocal"></EditTask>
</div>
</script>
Eğer EditTask
yayar uygun şekilde arayacak bir değişiklik set()
üzerinde listLocal
üst seviyeye olayı yaymak böylece ve. Benzer şekilde, EditTask
bileşen aynı zamanda diğer alt bileşenleri (form öğeleri gibi) kullanarak da çağırabilir v-model
.