Stack Overflow em Português Asked by Adolfo Moro on December 16, 2021
Ao dar um console.log(this),
Eu queria que o THIS do console retornasse o Vue, e não o This do Validate,
this.$ValidateUtil({ el: this.$refs.cadMain, rules: { cep: { required: true, regex: /^d{5}-d{3}$/ } }, messages: { cep: { regex: "CEP inválido" } }, submitHandler: function () { // AQUI!! -->>console.log(this); return false; } })
import Vue from 'vue'
import 'jquery-validation'
var LibsUtil = (function () {
function LibsUtil() {
}
LibsUtil.ValidateUtil = function (options) {
options = options || {}
$(options.el).validate({
rules: options.rules || {},
messages: options.messages || {},
submitHandler: function (form) {
if (typeof options.submitHandler !== 'undefined') {
options.submitHandler(this, form)
}
return false;
}
})
Return Vue;
};
LibsUtil.install = function (Vue) {
Vue.ValidateUtil = LibsUtil.ValidateUtil;
if (!Vue.prototype.hasOwnProperty("$ValidateUtil")) {
Vue.prototype.$ValidateUtil = LibsUtil.ValidateUtil;
}
};
return LibsUtil;
}());
export { LibsUtil };
export default LibsUtil;
Acontece que tem momentos em algumas funções que mudam o contexto do this, e por isso você não consegue mais acessá-lo, um exemplo disso é a função setInterval, onde dentro da execução da função é mudado o contexto, e com isso você não tem mais acesso ao this da instancia, para resolver isso você pode fazer da seguinte maneira:
todo(){
const self = this; //preserva instancia do this na variavel self
this.intervalid1 = setInterval(function(){
self.changes = ((Math.random() * 100).toFixed(2))+'%';
console.log (this.changes);
}, 3000);
}
dessa forma dentro do setInterval é possível utilizar a instancia do Vue com a variável "self", você pode utilizar essa mesma estratégia para essa lib de validação
Answered by Vitor Ceron on December 16, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP