0

Всем привет. Изучаю vuejs. Использую библиотеку на его основе - Element Но есть проблема, с событиями. В компоненте FormBuilder есть событие form-builder-fields

this.$root.$emit('form-builder-fields', createElement, fields, fieldAttributes);

И есть компонент Image в котором я его ловлю

this.$root.$on('form-builder-fields', (createElement, fields, fieldAttributes) => {
        fields['image'] = () => {
            console.log('Image widget created successfully')
            return createElement('ElUpload', {
                props: {
                    action: '111222333',
                    onSuccess: this.successEvent(),
                    listType: 'picture-card',
                    fileList: []
                }
            }, [createElement('i', {
                attrs: {
                    class: 'el-icon-plus'
                },
            })])
        };
        return fields;
    });

Это два независимых компонента. С помощью createElement в компоненте Image я создаю стандартный компонент с библиотеки Element, вот он ElUpload. Проблема в том что событие onSuccess компонента ElUpload срабатывает когда происходит событие form-builder-fields. Т.е. код метода successEvent() выполняется сразу, не дожидаясь события onSuccess ну или onSuccess срабатывает сразу. Суть вопроса в том собственно, как это исправить ?

  • Вот тут у вас два лишних символа есть: onSuccess: this.successEvent(). Догадайтесь какие именно. – Pavel Mayorov Sep 12 '17 at 08:26
  • Какие ? Я просто не совсем понимаю к чему вы клоните, если вы о скобках, разве если я их уберу то это не превратиться в переменную, следовательно в ошибку, т.к. такой переменной нет. Если насчет синтаксиса, так ошибок никаких дебагер не выдает, вроде бы верно все... – Гость Sep 12 '17 at 16:52
  • А вы попробуйте – Pavel Mayorov Sep 12 '17 at 16:53
  • Спасибо Вам огромное, действительно сработало. Никогда бы сам не додумался. Правда событие два раза срабатывает, но это явно не в этом проблема. А вот за скобки никогда бы не подумал. Еще раз огромное Вам спасибо :) – Гость Sep 12 '17 at 16:58
  • Скобки - это не отличие переменной от функции, а вызов функции. Со скобками у вас не работало потому что вы вызывали функцию сразу вместо ее передачи. – Pavel Mayorov Sep 12 '17 at 16:59
  • Вот ведь, не даром говорят - век живи, век учись. Даже не знаю сколько бы еще просидел, если бы не Вы. Еще раз огромнейшее Вам спасибо :) – Гость Sep 12 '17 at 17:02
  • Оформите ответом – Гость Sep 12 '17 at 17:03
  • Лень. Все равно надо будет потом канонический ответ писать, а то ваш вопрос довольно часто попадается... – Pavel Mayorov Sep 12 '17 at 17:05

0 Answers0