2017-02-22 8 views
0

this.$emit не работает в mounted крюк. Как с этим бороться? Я должен добавить setTimeout, но это плохая идея.

Внутри watcher он отлично работает.

watch: { 
    propInitialValue: function(val, oldVal) { 
     this.value = this.getValue(val); 
    }, 
    value: function(val, oldVal) { 
     if(! this.isDisabled) { 
      this.$emit('changed', this.propName, val); 
     } 
    } 
}, 
+0

события могут издавать только одно значение. Если вы используете vue-devtools: https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd, вы можете увидеть, было ли событие запущено. –

+1

Нет, многие значения. это. $ emit работает в других методах. Или с setTimeout в этом случае. –

+0

Попробуйте использовать 'this. $ Emit ('changed', {prop: this.propName, value: this.value});' Я не могу найти его нигде, но я уверен, что события не могут испускать несколько значений. –

ответ

0

Добавить .bind(this)

setTimeout(() => { 
    this.$emit('changed', this.propName, this.value); 
}, 1900).bind(this)