Je souhaite utiliser certaines fonctions de manière globale dans mon application.
La plupart des réponses à ma question font référence à Vue Mixin. Bien que je l'utilise, cela ne résout pas mon problème. Ceci est mon essai
Vue.mixin({
methods:{
gFun(){
console.log("Works");
},
}
})
const app = new Vue({
el: '#app',
data: {
},
created(){
gFun();
},
methods: {
}
});
Vue dit "ReferenceError: testMixin is not defined".
Je veux juste pouvoir utiliser gFun () globalement (sans utiliser comme this.gFun () ). Veuillez expliquer mon quelque chose.
Utiliser Vue Mixin ou non est correct.
3 Réponses :
Ce n'est pas un problème avec Vue.
Vous pouvez créer des fonctions globales en javascript en utilisant quelque chose comme:
window.gFun = window.gFun || () => console.log("Works");
Vous pouvez déclarer votre fonction globale comme function functon_name (parameters) {...} , essayer de passer l'instance vue comme un paramètre afin d'accéder à ses propriétés dans la fonction globale comme suit p>
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script> <div id="app" class="container"> </div>
Vue.config.devtools = false;
Vue.config.productionTip = false;
window.gFun = function(vm) {
console.log(vm.message);
}
const app = new Vue({
el: '#app',
data: {
message: "Hello !"
},
created() {
gFun(this);
},
methods: {
}
})
Une façon de procéder consiste à utiliser les mixins a > vous avez suggéré. Une autre excellente façon de procéder consiste à utiliser Plugin .
Remarquez comment je les ai déclarés et la différence entre la façon dont j'ai appelé les deux variables globales, en particulier le signe dollar ($) dans l'option plugin.
this.gMixinFun ()etthis. $ GPluginFun ()seront disponibles en tant que méthode globale dans les options de l'instance Vue.
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> </div>
Vue.config.productionTip = false;
Vue.config.devtools = false;
// OPTION 1: Using Mixin
Vue.mixin({
methods: {
gMixinFun: function() {
return "this is a mixin test"
}
}
});
// OPTION 2: Using plugin
const plugin = {
install() {
Vue.gPluginFun = () => 'this is a plugin test' //Vue.gPluginFun()
Vue.prototype.$gPluginFun = () => 'this is a plugin test' //this.$gPluginFun()
}
}
Vue.use(plugin)
const app = new Vue({
el: '#app',
created() {
console.log("Using mixins =>", this.gMixinFun());
console.log("Using plugins =>", this.$gPluginFun()); //or you can use Vue.gPluginFun() without the dollar($) sign
}
})
Si cela fonctionne pour vous, veuillez le marquer comme la bonne réponse. Merci :)