Vue: उदाहरण $ प्रेषण मूल्य वापस नहीं करेगा

को निर्मित 31 जन॰ 2016  ·  3टिप्पणियाँ  ·  स्रोत: vuejs/vue

नमस्ते, मैं vm.$dispatch बारे में थोड़ा उलझन में हूं क्योंकि मुझे उम्मीद है कि यह श्रोता के कॉलबैक से आगे के तर्क के लिए मूल्यों को वापस करेगा जिसे कॉलबैक _ (आईएमओ) _ में नहीं रखा जा सकता है लेकिन यह निकला उदाहरण यह स्वयं। मैं Vue सीख रहा हूँ और शायद कुछ छूट गया है।

var vm = new Vue({
    // omitted
    events: {
        'object:creating' : function (args) {
            // omitted
            return false;
        },
        'object:created' : function (args) {
            // omitted
        }
    }
});

var child = new Vue({
    parent: vm,
    // omitted
    methods: {
        performWhatever: function (args) {
            //
        },
        createObject: function (args) {
            // Pre-create
            if ( this.$dispatch('object:creating', args) === false ) {
                // Stop the creation
            }
            // The business logic
            this.performWhatever(args);

            // Post-create
            this.$dispatch('object:created', args);
        }
    }
})

जैसा कि आप देख सकते हैं, प्री-क्रिएट ऑपरेशन वैकल्पिक है।
धन्यवाद।

सबसे उपयोगी टिप्पणी

  1. $ प्रेषण का कोई वापसी मूल्य नहीं है।
  2. इवेंट सिस्टम ($ प्रेषण, $emit और इसी तरह) का उपयोग करने का मतलब है कि आपका कोड एसिंक्रोनस होगा, जिसका अर्थ है कि आगे क्या होता है संदेश रिसीवर द्वारा तय किया जाता है, इसलिए आप कुछ ऐसा नहीं लिखते हैं
    SomeAsyncCode === false
  3. जावास्क्रिप्ट दुनिया में, हम अतुल्यकालिक तर्क को संभालने के लिए कॉलबैक का उपयोग करते हैं (वादे बेहतर हैं लेकिन यह यहां लागू नहीं है), और $dispatch आपसे कॉलबैक फ़ंक्शन सहित कई तर्कों को पारित करने की अपेक्षा करता है।
  4. इसलिए, यह वही है जो आपको वास्तव में चाहिए:
this.$dispatch('object:creating', args, function() {
    // The business logic
    this.performWhatever(args);
})

और रिसीवर की तरफ,

events: {
    'object:creating' : function (args, callback) {
        // Do something with args and fire callback (or not)
        callback()
    }
}

सभी 3 टिप्पणियाँ

  1. $ प्रेषण का कोई वापसी मूल्य नहीं है।
  2. इवेंट सिस्टम ($ प्रेषण, $emit और इसी तरह) का उपयोग करने का मतलब है कि आपका कोड एसिंक्रोनस होगा, जिसका अर्थ है कि आगे क्या होता है संदेश रिसीवर द्वारा तय किया जाता है, इसलिए आप कुछ ऐसा नहीं लिखते हैं
    SomeAsyncCode === false
  3. जावास्क्रिप्ट दुनिया में, हम अतुल्यकालिक तर्क को संभालने के लिए कॉलबैक का उपयोग करते हैं (वादे बेहतर हैं लेकिन यह यहां लागू नहीं है), और $dispatch आपसे कॉलबैक फ़ंक्शन सहित कई तर्कों को पारित करने की अपेक्षा करता है।
  4. इसलिए, यह वही है जो आपको वास्तव में चाहिए:
this.$dispatch('object:creating', args, function() {
    // The business logic
    this.performWhatever(args);
})

और रिसीवर की तरफ,

events: {
    'object:creating' : function (args, callback) {
        // Do something with args and fire callback (or not)
        callback()
    }
}

स्पष्टीकरण के लिए धन्यवाद @fnlctrl :)

@fnlctrl व्याख्या के लिए धन्यवाद। यह अतुल्यकालिक है, मैं भूल गया, कितना शर्मनाक =D

क्या यह पृष्ठ उपयोगी था?
0 / 5 - 0 रेटिंग्स

संबंधित मुद्दों

julianxhokaxhiu picture julianxhokaxhiu  ·  3टिप्पणियाँ

gkiely picture gkiely  ·  3टिप्पणियाँ

aviggngyv picture aviggngyv  ·  3टिप्पणियाँ

bdedardel picture bdedardel  ·  3टिप्पणियाँ

loki0609 picture loki0609  ·  3टिप्पणियाँ