
Дмитрий
26.09.2018
18:31:41
Естественно

DimenSi
26.09.2018
18:44:22
Больше ничего другого не делал.

Adel
26.09.2018
18:45:53
Тоже самое. Вы лучше спросите не то, что есть ли у кого-то опыт, а вашу (если она есть) проблему

Google

Sasha
26.09.2018
18:51:58
У меня проблема такая. Я как и полагается возвращаю промис обьект. В нем генерирую полностью компонент, шаблон с сервера, переменные тоже с сервера. Вообщем полностью создаю компонент. После этого компонент монтируется и все прекрасно работает. Затем я перехожу в другой раздел, компонент соответственно уничтожается. Все вроде хорошо. Да забыл сказать что компонент обслуживает формы для пользователя. Значит после того когда пользователь открывает другую форму, то вот не задача, компонент не генерируется заново, а просто монтируется таким как и был до этого. Так вот вопрос как заставить генерироваться компонент каждый раз.

Valeriy
26.09.2018
18:59:41
и в чем тут заключается асинхронность компонента ? :))
вообще само название какое то странное

Sasha
26.09.2018
19:08:03
Ща доеду до дома напишу

Valeriy
26.09.2018
19:09:02
заодно проясни, что такое "просто монтируется", это выполнение mounted?
какого поведение то в принципе ожидаешь от закешированного компонента?

Mike
26.09.2018
19:15:37

Valeriy
26.09.2018
19:17:17

Mike
26.09.2018
19:17:58

Valeriy
26.09.2018
19:17:59
так то исходный объект, который перетаскивают не оставляют на месте

Anton
26.09.2018
19:18:12

Mike
26.09.2018
19:19:46

Valeriy
26.09.2018
19:20:23
вопрос не понял

Google

Valeriy
26.09.2018
19:20:33
у тебя есть контейнер в котором лежит исходная картинка
как только ты ее перемещаешь, измени вид контейнера, который теперь пустой
а картинка полупрозрачная перемещается

Mike
26.09.2018
19:23:16

Valeriy
26.09.2018
19:23:55
ну я ж не знаю какая у тебя задача
я не заказчик :))

Mike
26.09.2018
19:29:21

Yura
26.09.2018
19:49:26
Друзья, кто-то знаком с ngnix?

bulbazavr1k
26.09.2018
19:51:40

Yura
26.09.2018
19:54:25


Sasha
26.09.2018
20:18:03
заодно проясни, что такое "просто монтируется", это выполнение mounted?
какого поведение то в принципе ожидаешь от закешированного компонента?
// @/components/Pages/Processes/index.vue
<template>
...
<component v-bind:is="currentTabComponent" :task="{}" @submited="afterSubmit"></component>
или
<embeded-form @submited="afterSubmit" />
...
</template>
<script>
import EmbededForm from '@/components/Common/EmbededForm'
...
components: {
EmbededForm: () => EmbededForm()
// EmbededForm
}
</script>
// @/components/Common/EmbededForm
export default function () {
return new Promise(async function (resolve, reject) {
...
resolve(await getComponent())
})
}
В getComponent() происходят запросы к серверу на получение шаблона, переменных и т.д. для формирования примерно такого обьекта:
return {
template: await getTemplate(),
data: () => $data,
methods: $methods,
props: ['task']
}
И получается что он один раз его получил(исполнил промис), а потом просто монтирует (mounted) и уничтожает (destroyed), но заново промис уже не выполняет. А мне хотелось чтобы он полность переделывал его. Потому что другого способа на лету формировать компонент я не знаю.


Valeriy
26.09.2018
20:21:08
ну с виду какой-то пиздец если честно

d
26.09.2018
20:21:41

Valeriy
26.09.2018
20:21:46
components: {
EmbededForm: () => import '@/components/Common/EmbededForm'
}
это надо делать так как минимум
зачем ты делаешь async/await там?


Sasha
26.09.2018
20:24:18
Это путь к файлу из которого код
Импорт возвращает тот же промис, поэтому разницы нет

Google

Valeriy
26.09.2018
20:27:19

Sasha
26.09.2018
20:27:59
Разница в чем?

Valeriy
26.09.2018
20:28:49
насколько я понимаю, когда ты сделал просто импорт как обычно, то вебпак не засунет твой модуль в отдельный чанк и загрузит его с общим бандлом
когда ты делаешь импорт внутри функции как я выше показал, то импорт реальный произойдет только по требованию этого компонента
подгрузится отдельный js модуль
ты попробуй так и так и в закладке Network проверь
у меня вебпак автоматом рубит на чанки когда я так делаю

Sasha
26.09.2018
20:33:19
Я так понимаю что вэб пак уже не при чем. Это сам vue как то кэширует этот компонент и не перезапрашивает его вновь

Valeriy
26.09.2018
20:33:46
а вот vue как раз сам по себе не хуя не умеет
и все же допустим ты динамически загрузил компонент асинхронно,
ты не пояснил что такое "перемонтируется"

Sasha
26.09.2018
20:35:02
У меня компонент отображает формы из другой системы. Форм конечно много и поэтому когда пытаюсь отобразить другую форму, он мне показываетя ту которая была до этого и новую не перезапрашивает.

Valeriy
26.09.2018
20:35:04
и что тебя там не устраивает
а где он ее должен перезапросить?
из какого места?
по какому тригеру?

Sasha
26.09.2018
20:35:58
С сервера по другому id формы

Valeriy
26.09.2018
20:36:24
это понятно что с сервера
из какого метода?
mounted?

Sasha
26.09.2018
20:36:29
Запрашивает в getComponents

Google

Sasha
26.09.2018
20:36:46
Нет. Это все происходит до mount

Valeriy
26.09.2018
20:37:06
я надеюсь ты понимаешь, что импорт физически происходит только один раз

Sasha
26.09.2018
20:37:12
Я отдаю котовый обьект коипонкнта во вью
Понимаю

Valeriy
26.09.2018
20:37:39
ты в своем геткомпонентс в консоль что нибудь попробуй вывести
и посчитай сколько раз оно выполнится

Sasha
26.09.2018
20:37:51
Так вот собственно и вопрос.
Конечно пробовал. Он выводит только при первом запросе компонента, после он его не исполняет.

Admin
ERROR: S client not available

Valeriy
26.09.2018
20:38:35
ну так по коду иэто и видно
вполне ожидаемое поведение

Sasha
26.09.2018
20:38:52
Согласен

Valeriy
26.09.2018
20:38:57
перезапрашивай нужные данные в методе mounted компонента

Sasha
26.09.2018
20:40:05
Если Перезапрошу шаблон, как его подставить ы компонент и так чтобы он конечно был реактивным? this.render() или как то так

Valeriy
26.09.2018
20:40:26
если ты вот это <component :is="currentTabComponent" :task="{}" @submited="afterSubmit"></component> не обернул в keep-alive то оно будет пересоздаваться каждый раз
не нужно никаких render
просто в компоненте currentTabComponent в методе mounted делай запрос к серверу или если у тебя vuex то экшин вызывай соответствующий

Sasha
26.09.2018
20:41:33
Мне по факту нужно перестроить компонент полностью, свой $data, methods, template, все другое.
В этом и вопрос.

Костя
26.09.2018
20:43:27
Какие формы открывает компонент?

Google

Sasha
26.09.2018
20:43:31
Если есть другой способ отобразить внешную форму и так чтобы она оставалась реативной и со своими методами. То подскажите как
Формы bpmn движка camunda, если знаком такой.

Edward
26.09.2018
20:44:54
Есть массив places, который состоит из обьектов, каждый из которых имеет вид:
{
"services": [
{
"id": 2,
"name": "Предварительній заказ",
"translations": [
{
"id": 2,
"locale": "ua",
"name": "Предварительній заказ"
}
]
}
]
}
Как мне отфильтровать весь массив places, оставив только те, у которых, скажем есть services с id =2?

Sasha
26.09.2018
20:45:13
Т.е. с сервера приходит html шаблон с v-model и v-on и всеми плюшками vue
Array.filter(x => x.id === 2)

Edward
26.09.2018
20:46:41

Sasha
26.09.2018
20:46:49
Да

Edward
26.09.2018
20:47:25

Sasha
26.09.2018
20:47:37
Точнее элемент массива, а что это будет не важно

Edward
26.09.2018
20:47:44
Да
Но даже это не так, ведь services - тоже массив из N обьектов

Sasha
26.09.2018
20:47:53
Если конкретно то да
Я подсказал идею

Edward
26.09.2018
20:48:13

Sasha
26.09.2018
20:48:19
Ок

Edward
26.09.2018
20:58:12
Ок
Взгляни, если не сложно.
Это работать не будет?
this.$root.$data.places.filter(place => {
if(place[this.filter_type].length > 0)
{
console.log(place[this.filter_type][0].id == 2);
place[this.filter_type][0].id == 2;
}
})

Alex
26.09.2018
21:00:26

Sasha
26.09.2018
21:00:42
Не будет. Тебе в таком случае надо делать обязательно return и все это куда то присваивать. Если можешь сделай скрин, а то разметка поплыла

Edward
26.09.2018
21:01:18

Alex
26.09.2018
21:01:49