有什么方法可以在不使用$root的情况下从根实例调用mixin(方法)吗



各位程序员,我需要一些帮助:我想调用以下方法,之前不使用$root。这可能吗?我使用的是Vue单文件组件。我得到了以下信息:

//app.js
const mixin = {
methods: {
makeToast(title = "", content = "", hideAfter = 5000, position = 'b-toaster-bottom-right', append = true) {
this.$bvToast.toast(`${content}`, {
title: title,
toaster: position,
appendToast: append,
autoHideDelay: hideAfter,
})
}
}
}
const app = new Vue({
el: '#vue-app',
i18n,
mixins: [mixin],
});

然后可以像一样调用

<b-button @click="$root.makeToast('title','content here',2000);">CLICK FOR TOAST</b-button>

在我拥有的每一个组件中。这很好,但我想只通过makeToast调用该方法,而不是以前使用$root。我在初始化vue实例时尝试了以下操作:

const app = new Vue({
el: '#vue-app',
i18n,
mounted: function() {
var makeToast = this.$root.makeToast;
return makeToast;
},
mixins: [mixin],
});

还有created、有回报和无回报等,许多不同的方法都像这样。我不知道该怎么做。任何帮助以及解释或旁注都将不胜感激。感谢您抽出时间!

编辑:我在这里尝试了建议的解决方案,但没有成功。它告诉我函数没有定义或为空或任何错误,取决于我的尝试。也许是因为我在组件内部使用了这个功能?

我偶然发现了一个解决方案(或者更确切地说,重新阅读文档(

使用Vue原型:

Vue.prototype.$flash = function (title = "", content = "", hideAfter = 5000, position = 'b-toaster-bottom-right', append = true) {
this.$bvToast.toast(`${content}`, {
title: title,
toaster: position,
appendToast: append,
autoHideDelay: hideAfter,
})
};

在app.js中,那么您可以在每个组件中使用$flash(PARAMS HERE(!

最新更新