ভ্যু প্যাটার্নটি propsনীচে এবং eventsউপরে। এটি সহজ শোনায় তবে কাস্টম উপাদান লেখার সময় ভুলে যাওয়া সহজ।
ভ্যু ২.২.০ হিসাবে আপনি ভি-মডেল ( গণিত বৈশিষ্ট্য সহ ) ব্যবহার করতে পারেন । আমি এই সংমিশ্রণটি উপাদানগুলির মধ্যে একটি সাধারণ, পরিষ্কার এবং সামঞ্জস্যপূর্ণ ইন্টারফেস তৈরি করে খুঁজে পেয়েছি:
propsআপনার উপাদানগুলিতে যে কোনও পাস করা প্রতিক্রিয়াশীল থেকে যায় (যেমন, এটি ক্লোন করা হয় না বা watchপরিবর্তনগুলি সনাক্ত হওয়ার সাথে সাথে স্থানীয় অনুলিপি আপডেট করার জন্য কোনও ফাংশনের প্রয়োজন হয় না )।
- পরিবর্তনগুলি পিতামাতার কাছে স্বয়ংক্রিয়ভাবে নির্গত হয়।
- উপাদানগুলির একাধিক স্তরের সাথে ব্যবহার করা যেতে পারে।
একটি গণনা করা সম্পত্তি সেটার এবং গেটরকে পৃথকভাবে সংজ্ঞায়িত করার অনুমতি দেয়। এটি Taskউপাদানটিকে নিম্নরূপে পুনরায় লেখার অনুমতি দেয় :
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)
}
}
}
})
মডেল সম্পত্তি সংজ্ঞায়িত যা propসঙ্গে যুক্ত করা হয় v-modelযা ইভেন্ট, এবং পরিবর্তন নির্গত করা হবে না। তারপরে আপনি নীচের মতো পিতামাতার কাছ থেকে এই উপাদানটি কল করতে পারেন:
<Task v-model="parentList"></Task>
listLocalকম্পিউটেড সম্পত্তি উপাদান মধ্যে একটি সহজ গেটার এবং সেটার ইন্টারফেস প্রদান করে (ক ব্যক্তিগত পরিবর্তনশীল হচ্ছে মত মনে)। এর মধ্যে #task-templateআপনি রেন্ডার করতে পারবেন listLocalএবং এটি প্রতিক্রিয়াশীল থেকে যাবে (অর্থাত্ যদি parentListপরিবর্তন হয় তবে এটি Taskউপাদানটি আপডেট করবে )। আপনি listLocalসেটারকে (যেমন, this.listLocal = newList) কল করেও পরিবর্তন করতে পারেন এবং এটি পিতামাতার মধ্যে পরিবর্তনটি নির্গত করে।
এই প্যাটার্নটি সম্পর্কে দুর্দান্ত যেটি আপনি হ'ল (ব্যবহার করে ) listLocalএর একটি শিশু উপাদানকে যেতে পারেন এবং শিশু উপাদান থেকে পরিবর্তনগুলি শীর্ষ স্তরের উপাদানটিতে প্রচার করবে।Taskv-model
উদাহরণস্বরূপ, বলুন আমাদের কাছে EditTaskটাস্ক ডেটাতে কিছু ধরণের পরিবর্তন করার জন্য একটি পৃথক উপাদান রয়েছে। একই v-modelএবং গণনীয় বৈশিষ্ট্যগুলির প্যাটার্ন ব্যবহার করে আমরা listLocalউপাদানটিতে (ব্যবহার করে v-model) যেতে পারি:
<script type="text/x-template" id="task-template">
<div>
<EditTask v-model="listLocal"></EditTask>
</div>
</script>
তাহলে EditTaskনিঃসরণ করে পরিবর্তন এটা উপযুক্তভাবে ডাকব set()উপর listLocalএবং যার ফলে শীর্ষ স্তরের ইভেন্ট সঞ্চারিত। একইভাবে, EditTaskউপাদানটি অন্যান্য শিশু উপাদানগুলিকেও কল করতে পারে (যেমন ফর্ম উপাদানগুলি) ব্যবহার করে v-model।