VueJS - Как получить доступ к методам mixin из директивы - PullRequest
0 голосов
/ 06 декабря 2018

Простой код:

Vue.mixin(
    {
        methods :
        {
            test ()
            {
                return 'test';
            }
        },
    }
);

Vue.directive('my-directive',
    {
        inserted (el)
        {
            this.test();
        }
    }
);

[Vue warn]: ошибка в вставленной ловушке директивы my-directive: «Ошибка типа: невозможно прочитать свойство 'test' of undefined"

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018
Vue.mixin(
    {
        methods :
        {
            test ()
            {
                return 'test';
            }
        },
    }
);

Vue.directive('my-directive',
    {
        inserted (el)
        {
            //
        },
        bind(el, binding, vnode)
        {
            vnode.context.test();
        }
    }
);
0 голосов
/ 06 декабря 2018

Вам нужен экземпляр Vue для вызова метода, а у директивы нет связанного экземпляра.Но если вам не нужен конкретный экземпляр (то есть, если метод не ссылается на this), вы можете просто создать его на лету:

Vue.directive('my-directive',
    {
        inserted (el)
        {
            new Vue().test();
        }
    } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...