# Plugins & Servicios
MyPlugin.install = function (Vue, options) {
// 1. agregar método global o propiedad
Vue.myGlobalMethod = function () {
// algo de lógica...
}
// 2. agregar un recurso global
Vue.directive('my-directive', {
bind (el, binding, vnode, oldVnode) {
// algo de lógica...
}
...
})
// 3. inyectar algunas opciones de componentes
Vue.mixin({
created: function () {
// algo de lógica...
}
...
})
// 4. agregar un método de instancia
Vue.prototype.$myMethod = function (methodOptions) {
// algo de lógica...
}
}
# Filtros
const msToMm = {}
function convertMsToMm (ms) {
const min = Math.floor(ms / 60000)
const sec = ((ms % 60000) / 1000).toFixed(0)
return `${min}:${sec < 10 ? `00` : sec} min`
}
msToMm.install = function (Vue) {
Vue.filter('msToMm', val => {
return convertMsToMm(val)
})
}
export default msToMm
# Mixins
const myOwnMixin = {
data() {
return {}
},
methods: {},
computed: {}
}
}
export default myOwnMixin
# Directivas
const blur = {}
function setBlur (el, binding) {
el.style.filter = !binding.value ? 'blur(3px)' : '(none)'
el.style.filter = !binding.value ? 'not-allowed' : 'inherit'
el.querySelectorAll('a').forEach(element => {
if (!binding.value) {
element.setAttribute('disabled', true)
} else {
element.removeAttribute('disabled')
}
})
}
blur.install = function (Vue) {
Vue.directive('blur', {
bind (el, binding) {
setBlur(el, binding)
}
})
}
export default blur
# Watchers
export default {
data() {
return {
value: 0
}
},
watch: {
value(val) {
console.log('algo ha cambiado!!!')
}
}
}