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

例如,我有...

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 = false,但是thisundefined

最佳答案

要在指令中引用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/

09-17 16:47