$ source ~/.bash_profile
$ ln -s /usr/local/mongodb/bin/mongod /usr/local/bin
export default {
props: {
showModal:{ type: Boolean, default: false }
}
}
<template>
<store-modal-component :show-modal="showModal" />
</template>
selected
возвращает ложь, элемент удаляется из древа DOM и, следовательно, перестаёт работать jquery плагин инициализированный на нём. Чтобы это избежать, необходимо научиться понимать жизненный цикл Vue компонента. К тому же следует выделять код работающий с DOM но не являющийся неотъемлемой частью компонента в директивы. Например (для однофайловых компонентов):<template>
<div v-fancy-plugin="{ argumentObjectKey: 'value' }"></div>
</template>
<script>
import $ from 'jquery'
import fancyPlugin from 'fancy-plugin'
export default {
directives: {
fancyPlugin: {
inserted (element, argumentObject) {
$(element).fancyPluginInit(argumentObject)
}
}
}
</script>
// parent.vue
<template>
<parent>
<child @toggle-button="toggleButtonHandler"/>
</parend>
</template>
<script>
export default {
data: {
return {
buttonShow: false
}
},
methods: {
toggleButtonHandler () {
this.buttonShow = !this.buttonShow
}
}
}
</script>
// child.vue
<template>
<button @click="clickHandler">Hide Button</button>
</template>
<script>
export default {
methods: {
clickHandler () {
this.$emit('toggle-button')
}
}
}
</script>
$emit
принимает произвольные данные в качестве пейлоада события (второй аргумент обработчика).// store.js
export default {
state: {
buttonShow: false
},
mutations: {
buttonToggle: state => (state.buttonShow = !state.buttonShow)
}
}
clickHandler () {
this.$store.commit('buttonToggle')
}
@toggle-button
и больше не держит собственный стейт, а подписывается на стор:computed: {
buttonShow () {
return this.$store.state.buttonShow
}
}
<button class="slowly" data-target="some_id">Take me there but slowly</button>
$(".slowly").on("click", function (event) {
/*Отменяем стандартную обработку нажатия по ссылке.*/
event.preventDefault();
/*Забираем идентификатор блока с атрибута href.*/
var id = $(this).attr('href') || $(this).attr('data-target');
/*Узнаём высоту от начала страницы до блока, на который ссылается якорь.*/
var top = $(id).offset().top;
/*Анимируем переход на расстояние - top за 1000ms.*/
$('body,html').animate({scrollTop: top}, 1200);
const store = {
state: {
lockingPool: 0
},
getters: {
isUiLocked: state => state.lockingPool > 0
},
mutations: {
lockUi: state => state.lockingPool++,
unlockUi: state => state.lockingPool--
},
actions: {
async someAction ({ commit }) {
commit('lockUi')
const { data } = await http.get('/some-url')
commit('unlockUi')
}
}
}
<template>
<form>
<p v-if='errorMessage'>{{ errorMessage }}</p>
<input type='text' v-model='username'/>
<input type='password' v-model='password'/>
<button @click='send()'>Log in</button>
</form>
</template>
<script>
import someHttpClient from 'someHttpClient'
export default {
data: {
return {
username: '',
password: '',
errorMessage: ''
}
},
methods: {
send () {
var username, password, errorMessage = this
if (username && password) {
errorMessage = ''
someHttpClient.sendAndMaybeCipher({ username, password })
} else {
errorMessage = 'Form not filled properly'
}
}
}
}
</script>
var date = new Date()
if (date.getDate() === 25 && date.getMonth() === 11) {
showMessage()
}
$ docker-machine create --driver generic \
--generic-ip-address $REMOTE_IP_OR_HOSTNAME \
$REMOTE_MACHINE_NAME
$ eval (docker-machine env $REMOTE_MACHINE_NAME)
File
это специальный типBlob
~ MDN
File
в качестве аргумента метода #send
XMLHttpRequest
, чтобы отправить его в теле POST запроса. Например:function eventHandler (event) {
const file = event.files[0];
const xhr = new XMLHttpRequest();
xhr.open('POST', '/someroute', true)
xhr.onreadystatechange = function () {
if (xhr.status === 200) {
console.log(xhr.reponseText);
}
}
}
xhr.send(file);
{
xtype: 'triggerfield',
listeners: {
change: function(newVal, oldVal, field) {
console.log('new value', newVal);
console.log('old value', oldVal);
console.log('field', field);
}
}
}