VueJS-如何从指令

时间:2018-12-06 13:17:57

标签: javascript vue.js vuejs2

简单代码:

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

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

[Vue警告]:指令my-directive插入的挂钩中发生错误:“ TypeError:无法读取未定义的属性'test'”

2 个答案:

答案 0 :(得分:0)

您需要一个Vue实例来调用方法,并且指令没有关联的实例。但是,如果不需要 specific 实例(也就是说,如果该方法未引用this),则可以即时创建一个实例:

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

答案 1 :(得分:0)

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

Vue.directive('my-directive',
    {
        inserted (el)
        {
            //
        },
        bind(el, binding, vnode)
        {
            vnode.context.test();
        }
    }
);