老项目业务代码写的自定义指令,想在指令里面获取vue实例,来提示国际化字段。直接打印this是不行的。需要在bing(el, { value }, vNode)里写上第三个参数
获取this 就是Vue实例。想获取定义的$t 就需要找到Vue实例
获取如下
Vue-Html
<a-button v-copy="this.link">{
{ $t('record.copy') }}</a-button>
Vue实例并调取自定义i18n实例对象
let vueNodeObj = vNode.componentInstance.$root
// 获取i18n方法
vueNodeObj.$t('key', {count: 5})
const copy = {
bind(el, { value }, vNode) {
el.$value = value;
el.handler = () => {
if (!el.$value) {
// Message.warning(this.$t('visit.copy.no'));
Message.warning(vNode.componentInstance.$root.$t('visit.copy.no'));
return;
}
// 动态创建 textarea 标签
const textarea = document.createElement('textarea');
textarea.readOnly = 'readonly';
te