मैं कैसे vue.js. में घटकों के बीच डेटा पास करने के लिए समझने के लिए संघर्ष कर रहा हूँ मैंने कई बार डॉक्स के माध्यम से पढ़ा है और कई संबंधित प्रश्नों और ट्यूटोरियल को देखा है, लेकिन मुझे अभी भी यह नहीं मिल रहा है।
इसके चारों ओर अपना सिर लपेटने के लिए, मैं एक बहुत सरल उदाहरण को पूरा करने में मदद की उम्मीद कर रहा हूं
- एक घटक में उपयोगकर्ताओं की एक सूची प्रदर्शित (किया)
- लिंक पर क्लिक करने (किए जाने) के लिए उपयोगकर्ता डेटा को एक नए घटक पर भेजें - नीचे अपडेट देखें।
- उपयोगकर्ता डेटा संपादित करें और इसे मूल घटक पर भेजें (यह अब तक प्राप्त नहीं हुआ है)
यहाँ एक फील है, जो स्टेप टू पर फेल है: https://jsfiddle.net/retrogradMT/d1a8ips0/
मैं समझता हूं कि मुझे नए घटक को डेटा पास करने के लिए प्रॉपर का उपयोग करने की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि यह कार्यात्मक रूप से कैसे किया जाए। मैं डेटा को नए घटक से कैसे बाँधूँ?
HTML:
<div id="page-content">
<router-view></router-view>
</div>
<template id="userBlock" >
<ul>
<li v-for="user in users">{{user.name}} - <a v-link="{ path: '/new' }"> Show new component</a>
</li>
</ul>
</template>
<template id="newtemp" :name ="{{user.name}}">
<form>
<label>Name: </label><input v-model="name">
<input type="submit" value="Submit">
</form>
</template>
मुख्य घटक के लिए js:
Vue.component('app-page', {
template: '#userBlock',
data: function() {
return{
users: []
}
},
ready: function () {
this.fetchUsers();
},
methods: {
fetchUsers: function(){
var users = [
{
id: 1,
name: 'tom'
},
{
id: 2,
name: 'brian'
},
{
id: 3,
name: 'sam'
},
];
this.$set('users', users);
}
}
})
दूसरे घटक के लिए JS:
Vue.component('newtemp', {
template: '#newtemp',
props: 'name',
data: function() {
return {
name: name,
}
},
})
अपडेट करें
ठीक है, मुझे दूसरा चरण मिल गया है। यहाँ एक नई फ़िडेल है जो प्रगति दिखा रही है: https://jsfiddle.net/retrogradMT/9pffnmjp/
क्योंकि मैं वी-राउटर का उपयोग कर रहा हूं, मैं डेटा को एक नए घटक पर भेजने के लिए प्रॉपर का उपयोग नहीं करता हूं। इसके बजाय, मुझे वी-लिंक पर सेट परमर्स चाहिए और फिर इसे स्वीकार करने के लिए एक ट्रांज़िशन हुक का उपयोग करना चाहिए।
V- लिंक परिवर्तन vue- राउटर डॉक्स में नामित मार्गों को देखते हैं :
<a v-link="{ name: 'new', params: { name: user.name }}"> Show new component</a>
फिर घटक पर, मार्ग विकल्पों में डेटा जोड़ें संक्रमण हुक देखें :
Vue.component('newtemp', {
template: '#newtemp',
route: {
data: function(transition) {
transition.next({
// saving the id which is passed in url
name: transition.to.params.name
});
}
},
data: function() {
return {
name:name,
}
},
})