
rddlr
08.09.2018
14:05:38
может как-то императивно можно указать компоненту не маунтится?
и почему он вообще маунтится я не понимаю
ну т.е. если я повешу условие на app-modal тогда маунтед ожидаемо не отрабатывает. я был уверен что он не будет отрабатывать и если это условие внутри самого компонента. а оказалось вот что. у меня ощущение из-за этого и не работают мои транзишены с порталом
только я нахожу это странным и нелогичным?

Google

John
08.09.2018
14:13:56
Есть песочница?

rddlr
08.09.2018
14:16:03
выше ж ссылка. ее не видно?)
ну вот что не так? получается компонент будет маунтится если я пропсом кидаю условие?
как я раньше не обращал на это внимание не понятно

Alex
08.09.2018
14:28:48
Ну компонент маунтится, несмотря на то что внутри него все под условием. Логично же :)
Выносите условие наверх
Если это критично


Mike
08.09.2018
14:30:37
Ребят подскажите про правильность моих действий
я сейчас делаю адаптацию, и у меня в проетке на мобильных устройствах вместо сайдбара стоит мобильная навигация внизу.
так вот, я хочу через v-if показывать или сайдбар или навигацию. с этим у меня проблем нет, я все сверстал и сделал.
дело в том, что у меня есть 2 лейаута, 1 без сайдбара (для страницы логина) а другой с сайдбаром (для всех страниц сайта), так вот, в каждой странице сайта есть обертка этим лейаутом с сайдбаром, а в ней уже контент, ну такая, стандартная практика, чтобы в App.vue мозги не делать.
дело в том, что я хочу все сделать максимально производительным, то есть по v-if, чтобы для телефонов не грузился код, который не нужен.
вот код этого лейаута:
<template>
<div class="layout-default">
<AppSidebar v-if="showSidebar"/>
<MobileNavigation v-else/>
<main>
<slot/>
</main>
</div>
</template>
<script>
import AppSidebar from './AppSidebar'
import MobileNavigation from './MobileNavigation'
export default {
name: 'LayoutDefault',
components: {
AppSidebar,
MobileNavigation
},
data () {
return {
showSidebar: true
}
},
created () {
window.addEventListener('resize', () => {
this.showSidebar = window.innerWidth > 991
})
}
}
</script>
а вот почему я спрашиваю: я в хуке created повесил обработчик ресайза на window, и при ресайзе присваивается значение переменной showSidebar, чтобы v-if работал.
но в этот лейаут обернуты все страницы, за исключением логина, и когда будет новый переход по странице, то получается будет вешаться новый обработчик на window?


rddlr
08.09.2018
14:31:03

Alex
08.09.2018
14:31:48
Транзишен тоже вынести наверх

rddlr
08.09.2018
14:31:52
офигеть я запутлся. пойду гулять. спс, почему маунтится я понял (ппц, как можно было так протупить, я в шоке)


Alex
08.09.2018
14:33:43
Ребят подскажите про правильность моих действий
я сейчас делаю адаптацию, и у меня в проетке на мобильных устройствах вместо сайдбара стоит мобильная навигация внизу.
так вот, я хочу через v-if показывать или сайдбар или навигацию. с этим у меня проблем нет, я все сверстал и сделал.
дело в том, что у меня есть 2 лейаута, 1 без сайдбара (для страницы логина) а другой с сайдбаром (для всех страниц сайта), так вот, в каждой странице сайта есть обертка этим лейаутом с сайдбаром, а в ней уже контент, ну такая, стандартная практика, чтобы в App.vue мозги не делать.
дело в том, что я хочу все сделать максимально производительным, то есть по v-if, чтобы для телефонов не грузился код, который не нужен.
вот код этого лейаута:
<template>
<div class="layout-default">
<AppSidebar v-if="showSidebar"/>
<MobileNavigation v-else/>
<main>
<slot/>
</main>
</div>
</template>
<script>
import AppSidebar from './AppSidebar'
import MobileNavigation from './MobileNavigation'
export default {
name: 'LayoutDefault',
components: {
AppSidebar,
MobileNavigation
},
data () {
return {
showSidebar: true
}
},
created () {
window.addEventListener('resize', () => {
this.showSidebar = window.innerWidth > 991
})
}
}
</script>
а вот почему я спрашиваю: я в хуке created повесил обработчик ресайза на window, и при ресайзе присваивается значение переменной showSidebar, чтобы v-if работал.
но в этот лейаут обернуты все страницы, за исключением логина, и когда будет новый переход по странице, то получается будет вешаться новый обработчик на window?
Компонент же останется

Google

Максим
08.09.2018
14:34:34
Есть у меня вот такой вот список треков с названием треков и контролами справа: https://slack-imgs.com/?c=1&url=https%3A%2F%2Fmonosnap.com%2Ffacebook%2Fgenerate_image_preview%3Fid%3DhRdYxCD0xIyHQBTbTWFzY9BondFEzX. По нажатию на каждую из этих кнопок (будь то кнопка плей, редактирование или удалить) мне нужно, чтобы остальные кнопки выключались, а текущая (на которую нажал) включалась. И также нужно, чтобы по нажатию на кнопку “редактировать” слева открывался инпут этой строки (он спрятам, не суть).
Как правильно на Vue.js делать такое?)

Mike
08.09.2018
14:34:48
Компонент же останется
ну хз, то есть это же SPA, при переходах по страницам подгружаются вьюхи с компонентами, то есть я думал этот компонент заного дублируется при переходе на новую страницу

Alex
08.09.2018
14:35:17

Максим
08.09.2018
14:35:42
то есть проходиться по ВСЕМ кнопкам и их выключать, а потом включать нужную?
с помощью простого жс

Alex
08.09.2018
14:35:53

Mike
08.09.2018
14:36:50

Alex
08.09.2018
14:37:23
Просто лишнюю вложенность добавляете?

Максим
08.09.2018
14:37:36

Alex
08.09.2018
14:38:15
Выбирайте

Максим
08.09.2018
14:38:44
А немного не понял про свойство, которое активно

Alex
08.09.2018
14:39:13
selectedId куда сохранять например айди проигрываемого
И везде сравнивать с selectedId чтобы понимать

Максим
08.09.2018
14:40:03
ну просто дело в том, что, во-первых, у кнопок нет айди, а во-вторых, там ещё и редактирование кнопка, и удалить трек, + этот инпут ещё(
столько создавать свойств

Mike
08.09.2018
14:40:20

Максим
08.09.2018
14:40:45
у кнопок этих есть классы, одниковые, так как бэм
выходит надо как минимум 4 свойства создавать на инпут и каждую кнопку

Google

Alex
08.09.2018
14:41:30
Не у кнопок. У строки
Ну работайте от данных) хотите меняйте в данных строк, тогда не удивляйтесь что другие тоже надо менять)

Mike
08.09.2018
14:43:02

Alex
08.09.2018
14:43:53
Ну в апп.вью и разруливайте один раз на все страницы нужен сайдбар или мобильная навигация

rddlr
08.09.2018
15:18:55
вообщем, ребята. просто пишу вам чтобы вы не повторяли ошибки таких дебилов как я (которые тратят 5 часов на поиск лисапеда), а не читают доку
<portal-target
:transition="{ name: 'fade'}"
:transition-events="{ enter: onEnterCallBack }"
/>
и все, ска, работает
у портала есть свой апи для транзишенов)))

The
08.09.2018
16:04:11
зачем многие css фреймворки называют классы с цветами danger, warning, и т.д.?
почему нельзя назвать yellow, red, и т.д.?
это для того, что кто-то решит danger переделать в зеленый?
ну ладно там info, primary и т.д.
мир фронтенда такой дивный
все через жопку

Alex
08.09.2018
16:08:10
Может быть не красный а малиновый
Не зелёный а салатовый
А в некоторых случаях совсем другие цвета
Не будешь же в кучу мешать info и красный

John
08.09.2018
16:11:54

The
08.09.2018
16:12:45
это логично, да, но проблема в том, что люди начинают выделять скидки is-dangerами, а наличие is-success, и семантика более не семантика.
хотя, это видимо уже проблемы отдельных уникумов, можно же сделать
.sale
color: $danger-color

Google

John
08.09.2018
16:13:37
Именно

Alex
08.09.2018
16:18:35
Проблема не в инструментах
А прослойках до них ))

Speed of
08.09.2018
16:22:28
в vuetify надо добавить justify-end только в некоторых случаях, как это реализовать через if else ? чет не получается у меня


Alexey
08.09.2018
16:22:52
async getDefaultsTest({ commit, getters, dispatch }) {
console.log("getDefaults")
try {
await Promise.all([
new Promise((resolve, reject) => {
if (getters["settings/app_settings"]) {
resolve()
} else {
console.log("need settings_get")
return this.$axios
.$get("settings_get")
.then(result => {
console.log("settings get ok")
commit("settings/SET_APP_SETTINGS", result.appSettings)
resolve()
})
.catch(err => reject(err))
}
}),
new Promise((resolve, reject) => {
if (getters["configure/servers"]) {
resolve()
} else {
console.log("need servers_get")
return this.$axios
.$get("servers_get")
.then(result => {
console.log("servers get ok")
commit("configure/SET_SERVERS", result.servers)
resolve()
})
.catch(err => reject(err))
}
})
])
console.log("promise all end")
} catch (err) {
const error_msg = err.response && err.response.data ? err.response.data : err
throw new Error(Request error. ${error_msg})
}
}
чекните плиз код. что не так?

Admin
ERROR: S client not available

Alex
08.09.2018
16:23:48
Зачем try catch?

Alexey
08.09.2018
16:23:50
смысл паралельно два запросе к беку отослать и заполнить стор. но только если нужно

Van
08.09.2018
16:23:53

Alexey
08.09.2018
16:24:15

Alex
08.09.2018
16:24:40
А .catch тебе зачем тогда
И promise all тут тоже плохо

Speed of
08.09.2018
16:25:02

Alex
08.09.2018
16:25:04
1 промис реджектнится- все реджектнится

Alexey
08.09.2018
16:25:18
почему? а как?

Alex
08.09.2018
16:25:27
Promise.all().catch
Так лови ошибки

Google

Alexey
08.09.2018
16:25:42

Alex
08.09.2018
16:25:46
Само собой
Или пиши свою обертку на параллелизацию

Alexey
08.09.2018
16:26:08
а что еще исправить?

Alex
08.09.2018
16:26:32
Или любую библиотеку для асинк флоу
Например async

Alexey
08.09.2018
16:27:13

Alex
08.09.2018
16:27:15
И return ещё всего этого
Иначе функция ж не асинхронная

Alexey
08.09.2018
16:27:44
может каждый запрос все же вынести в отдельнвй action

Alex
08.09.2018
16:28:12
У тебя асинхронная функция должна промис вернуть

Alexey
08.09.2018
16:28:31

Roman
08.09.2018
16:28:31

Alexey
08.09.2018
16:28:39

Roman
08.09.2018
16:28:48
а как
запросы смешаны с логикой
аксиос в прототипе