J'ai travaillé avec VueJS pendant un moment, et c'est génial. J'ai été capable de l'intégrer avec jQueryUI (pour un ancien site Web) et j'ai créé un composant datepicker, et un composant datetime picker aussi bien, les deux fonctionnent correctement.Impossible d'utiliser le plugin jquery dans le composant VueJS
Maintenant j'essaye de créer un composant simple de numéro de téléphone, qui fournit simplement une entrée avec un masque qui aide avec le format de numéro de téléphone. Le plugin pour jquery qui fournit le masquage fonctionne correctement, mais si j'essaie de masquer une entrée dans mon composant, cela ne fonctionne pas.
Voici le code exemple dans jsFiddle:
Simple Masked Phone input component for vuejs 2.4.0 - jsfiddle
Javascript:
Vue.component('phone', {
template: '#phone',
props: {
value : {
type : String,
default: ''
},
mask: {
type : String,
default: '(999) 999-9999'
}
},
data: function() {
return {
internalValue: ''
};
},
created: function() {
this.internalValue = $.trim(this.value);
},
mounted: function() {
$(this.$el).find('.phone:eq(0)').mask('(999) 999-9999');
},
methods: {
updateValue: function (value) {
this.$emit('input', value);
}
}
});
var vueapp = new Vue({
el: '#content',
data: {
myphone: ''
}
});
$('.phonex').mask('(999) 999-9999');
HTML:
<div id="content">
<script type="text/x-template" id="phone">
<input type="text" class="phone" v-model="internalValue" v-on:input="updateValue($event.target.value)" />
</script>
<label>Vue Phone</label>
<phone v-model="myphone"></phone>
<br />
{{ myphone }}
<br />
<label>Simple Phone</label>
<input type="text" class="phonex" />
</div>
Cette est ce que je vois:
Dépendances:
Est-ce que je fais mal ici? Merci.
Merci beaucoup pour votre réponse. Comme vu dans l'exemple fourni, cela fonctionne.Voici un exemple (basé sur la réponse acceptée) où le composant a plus d'éléments à l'intérieur, juste comme référence si quelqu'un d'autre en a besoin: https://jsfiddle.net/jdavidzapatab/Lk0twvn2/ –