VueJS watch и createElement

215
07 декабря 2017, 02:32

Всем привет. В общем есть компонент, в нем метод с помощью которого гружу файлы на серв, если все ок отдаю список файлов на клиент. Вроде этого

handleUpload(event) {
    let files = [];
    let mediaFiles = event.target.files
    Object.keys(mediaFiles).map(key => {
        files['mediaFiles[' + key + ']'] = mediaFiles[key];
    });
    axios.post('/backend/media/item/create', files)
        .then((response) => {
            if (response.data.errors) {
                return this.errors = response.data.errors
            }
            return this.items = response.data.items;
         })
         .catch(function(err) {
             return Promise.reject(err.status);
          });
    }

Хочу добавить кнопки для действий над файлом/файлами, т.е. к примеру если файлов больше 0 отрисовать кнопку для удаления, если меньше - удалить кнопку, я так понял вотчеры для этого подходят идеально(хотя не уверен). Делаю что-то вроде этого

watch: {
    items: function(items) {
        if ( items.length > 0 ) {
            this.buttons.push({
                id: 'remove-all',
                text: 'Удалить все',
                type: 'danger',
                plain: true,
                click: this.handleRemoveAll
            });
        }
    }
}

*this.buttons - массив объектов, который я потом рендерю с помощью createElement

Получаю две проблемы - кнопка отрисовывается дважды, и второе - перестают работать евенты(или остальные вотчеры), не перерисовывается страница

return this.items = response.data.items

не работает. Нужно перезагрузить страницу, чтобы увидеть изменения. Без вотчера все работает корректно.

READ ALSO
Определение доступности Flash player в Firefox

Определение доступности Flash player в Firefox

Как в Firefox определить доступность Flash Palyer

256
Замыкание с использованием Named Function Expression

Замыкание с использованием Named Function Expression

Здравствуйте, изучаю JS,пытаюсь разобраться в решении задачи на замыкание:

278
Экранирование обратного слеша в js

Экранирование обратного слеша в js

Необходима экранирование слеша, чтобы он отображался как символ, однако при получении параметра функцией обратный слеш просто исчезаетИспользую...

406
ReactJS key для child-элементов

ReactJS key для child-элементов

Стоит задача вывести элементы из JSON, которые будут изменяться пользователемПроблема появляется при выводе массива:

253