चेतावनी: निम्नलिखित उत्तर Vue 1.x का उपयोग कर रहा है। twoWay
डेटा उत्परिवर्तन Vue 2.x (सौभाग्य से!) से हटा दिया गया है। तदनुसार, मैं जल्द ही उत्तर अपडेट कर दूंगा।
:
"वैश्विक" चर-कि वैश्विक वस्तु है, जो वेब में विंडो ऑब्जेक्ट चर घोषित करने के लिए ब्राउज़र-सबसे विश्वसनीय तरीका है से जुड़े होते हैं के मामले में वैश्विक वस्तु स्पष्ट रूप पर सेट करने के लिए है
window.hostname = 'foo';
हालांकि वू के पदानुक्रम परिप्रेक्ष्य (रूट व्यू मॉडल और नेस्टेड घटक) फॉर्म को नीचे से पारित किया जा सकता है (और दोवे बाध्यकारी निर्दिष्ट होने पर ऊपर उत्परिवर्तित किया जा सकता है)।
उदाहरण अगर जड़ ViewModel एक hostname
डेटा है के लिए, मान एक नेस्टेड घटक को v-bind
निर्देश के साथ v-bind:hostname="hostname"
के रूप में या छोटी :hostname="hostname"
में बाध्य किया जा सकता है।
और घटक के भीतर बाध्य मूल्य घटक के props
संपत्ति के माध्यम से पहुंचा जा सकता है।
आखिरकार डेटा this.hostname
पर प्रॉक्सी किया जाएगा और यदि आवश्यक हो तो वर्तमान Vue इंस्टेंस के अंदर उपयोग किया जा सकता है।
var theGrandChild = Vue.extend({
template: '<h3>The nested component has also a "{{foo}}" and a "{{bar}}"</h3>',
props: ['foo', 'bar']
});
var theChild = Vue.extend({
template: '<h2>My awesome component has a "{{foo}}"</h2> \
<the-grandchild :foo="foo" :bar="bar"></the-grandchild>',
props: ['foo'],
data: function() {
return {
bar: 'bar'
};
},
components: {
'the-grandchild': theGrandChild
}
});
// the root view model
new Vue({
el: 'body',
data: {
foo: 'foo'
},
components: {
'the-child': theChild
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.16/vue.js"></script>
<h1>The root view model has a "{{foo}}"</h1>
<the-child :foo="foo"></the-child>
मामलों है कि हम ऊपर की तरफ माता पिता के डेटा उत्परिवर्तित की जरूरत के लिए, हम :foo.sync="foo"
की तरह हमारे बाध्यकारी घोषणा करने के लिए एक .sync
संशोधक जोड़ने और निर्दिष्ट करें कि दिए गए 'सहारा' माना जाता है कर सकते हैं twoWay
बाध्य डेटा होने के लिए।
इसलिए घटक में डेटा को म्यूट करके, माता-पिता का डेटा क्रमशः बदला जाएगा।
उदाहरण के लिए:
var theGrandChild = Vue.extend({
template: '<h3>The nested component has also a "{{foo}}" and a "{{bar}}"</h3> \
<input v-model="foo" type="text">',
props: {
'foo': {
twoWay: true
},
'bar': {}
}
});
var theChild = Vue.extend({
template: '<h2>My awesome component has a "{{foo}}"</h2> \
<the-grandchild :foo.sync="foo" :bar="bar"></the-grandchild>',
props: {
'foo': {
twoWay: true
}
},
data: function() {
return { bar: 'bar' };
},
components: {
'the-grandchild': theGrandChild
}
});
// the root view model
new Vue({
el: 'body',
data: {
foo: 'foo'
},
components: {
'the-child': theChild
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.16/vue.js"></script>
<h1>The root view model has a "{{foo}}"</h1>
<the-child :foo.sync="foo"></the-child>
स्रोत
2016-05-22 07:13:19
परिभाषित करें "जल्दी ही ", कृप्या। –
मुझे लगता है कि उसका मतलब "कभी नहीं" था। –
उसे जरूरत नहीं है। वू तेज़ था और इसे फिर से कार्यान्वित किया गया: https://vuejs.org/v2/guide/components.html#sync-Modifier – NeoDevlin