Vue.js 2,从指令更改数据

Vue.js 2, change data from directive

使用单个文件组件,如何从指令更改数据属性?

例如,我有...

export default {
    name: 'app',
    data: function() {
        return {
            is_loading: true
        }
    },
    directives: {
        do_something: {
            bind: function(el, binding, vnode) {
                // Change the is_loading property
            }
        }
    }
}

起初我以为我可以做到 this.is_loading = falsethisundefined

要在指令中引用 this,您可以简单地使用 vnode.context,因此在您的指令中,您将拥有:

    do_something: {
        bind: function(el, binding, vnode) {
            // same as this.is_loading in a directive
            vnode.context.is_loading = false;
        }
    }

然后在你的标记中你会做:

<div v-do_domething></div>

这是 JSFiddle:https://jsfiddle.net/3qvtdgyd/