props
в свойствах маршрута может быть функцией. В эту функцию вы можете добавить как свой валидатор, так и приведение типов. firstChild
и что там у него со scrollHeight
. Не знаете, говорю, даже если сами тот компонент написали. Это основа компонентного подхода: содержимое любого компонента может быть полностью переписано без влияния на зависимые от него родительские компоненты. Любое управление осуществляется через props
, события (и, в особых случаях, докуметированные публичные методы и свойства, получаемые через ref
). set-height-by-child
, которое и будет управлять данным поведением, либо, если нужна работа с этой высотой снаружи, посылать из него событие вроде @emit('scroll-height-changed', scrollHeight)
при mounted
, при изменении размера экрана и прочих возможных случаях. {
infoBlock: [{
type: 'text',
value: '...'
},{
type: 'component',
value: 'review'
},{
type: 'text',
value: '...'
}]
}
а уже SPA разложит это всё на готовую разметку.@transitionend="mymethod"
должно работать само по себе, без лишних телодвижений. В крайнем случае @transitionend.native="mymethod"
если цель - другой компонент. currentDate() {
return moment(this.getCurrentDateRange.start, "YYYYMMDD(или какой там формат)").format('YYYY-MM-DD')
},
v-html
- только для обычного html. И то использовать надо только когда без него совсем никак.Vue
работает с данными, а не разметкой, разметка строится сама на основе данных....
<component :is="value">{{name}}</component>
...
data
, соотвтественно:...
{
id: 2,
name: this.$t("Email"),
value: `LinkElement`
}
...
<v-card>
<v-card-title>Выберите модель</v-card-title>
<v-btn-toggle class="mb-10" v-model="currentButton">
<v-btn color="#546E7A" :key="btn.id" v-for="btn in btnModelInfo">{{btn.name}}</v-btn>
</v-btn-toggle>
<!-- Здесь должно менять изображение в зависимости от выбранного цвета-->
<v-btn-toggle>
<v-btn :color="color" :key="name" v-for="[name, color] in currentColors" @click="changeColor(name)"></v-btn>
</v-btn-toggle>
</v-card>
{
data() {
return {
btnModelInfo: [
{id: '1', name: 'model_1' , colors: ['white', 'blue', 'red']},
{id: '2', name: 'model_2' , colors: ['red', 'green', 'blue']},
],
allColors: {
white: '#ffffff',
blue: "#0000ff ",
red: '#ff0000',
green: '#00ff00',
},
currentButton: null
}
},
computed: {
currentColors() {
return this.currentButton === null ? [] : this.btnModelInfo[this.currentButton]
.colors
.map(name => [name, this.allColors[name]]);
}
},
methods: {
changeColor(color) {
//Здесь должно менять изображение в зависимости от выбранного цвета
}
}
}
methods: {
async generatePDF() {
const html2pdfd = await import("html2pdf" /*webpackChunkName:"html2Pdf"*/);
html2pdfd()
},
...
}
methods: {
generatePDF() {
import("html2pdf" /*webpackChunkName:"html2Pdf"*/).than(html2pdfd => {
html2pdfd()
})
},
...
}