Можно ли выполнить $ emit в синхронном режиме и получить результат обратно из события emit - PullRequest
1 голос
/ 26 марта 2019

Возможно ли выполнить как emit так же синхронно и получить результат обратно при вызове самого метода. Итак, я хочу выполнить следующий оператор после завершения $ emit. как показано ниже:

Parent component has method, 
                 doCustomValidation();

child component is as follow:
methods:
{
  Save: function(){
 // Can I get the response here from parent component and then, execute 
    doGenericValidation ?

 var errorFields = this.$emit('custom-validation');  
   doGenericValidation(errorFields);   //this is generic validations
}

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Вы не должны пытаться сделать это синхронно.Вместо этого вы можете использовать эту идею:

methods: {
    myMethod() {
        // Pass a function as a parameter.
        this.$emit('custom-validation', this.onComplete);
    },
    onComplete() {
        // Do stuff after custom-validation has completed.
    }
}

И затем в любом компоненте, использующем ваше событие:

<some-component @custom-validation="doStuff" />
<script>
...
methods: {
    doStuff(done) {
        // Your logic here. After that, call the callback function.
        done();
    }
}
...

1 голос
/ 26 марта 2019

Нет.$emit всегда будет в очереди.Также может быть несколько прослушивателей, поэтому возвращаемое значение на самом деле не имеет смысла.

В качестве обходного пути вы можете отправить функцию в качестве свойства и затем вызвать ее напрямую.

...