有什么方法可以在不使用 $root 的情况下从根实例调用 mixin(方法)?
Any way to call a mixin (method) from the root instance without using $root?
各位程序员大家好,我需要一些帮助:
我想调用以下方法,之前没有 $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],
});
也有创建的、有和没有 return 等许多不同的方法,比如这个。
我不知道如何完成这项工作。
任何帮助以及解释或旁注将不胜感激。
感谢您的宝贵时间!
编辑:我在这里尝试了 ,但没有成功。它告诉我函数未定义或为空或任何错误,具体取决于我的尝试。
可能是因为我在组件内部使用这个函数?
我偶然找到了解决方案(或者更确切地说,重新阅读文档)
使用 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)!
各位程序员大家好,我需要一些帮助: 我想调用以下方法,之前没有 $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],
});
也有创建的、有和没有 return 等许多不同的方法,比如这个。 我不知道如何完成这项工作。 任何帮助以及解释或旁注将不胜感激。 感谢您的宝贵时间!
编辑:我在这里尝试了
我偶然找到了解决方案(或者更确切地说,重新阅读文档)
使用 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)!