VueJS这在lodash节流方法中

时间:2017-03-21 12:19:35

标签: vue.js lodash

我试图在我的VueJS应用程序中限制一个方法。我最初尝试了以下内容:

export default {
    data () {
        return {
            foo: 'bar'
        }
    },
    methods: {
        doSomething () {
            console.log('olas')
        }
    },
    created () {
        _.throttle(this.doSomething,200)
    }
}

doSomething方法没有被解雇:https://jsfiddle.net/z4peade0/

然后,我尝试了这个:

export default {
    data () {
        return {
            foo: 'bar'
        }
    },
    methods: {
        doSomething: _.throttle( () => {
            console.log('olas')
        },200)
    },
    created () {
        this.doSomething()
    }
}

并触发functiong:https://jsfiddle.net/z4peade0/1/

问题是,我无法访问受限制方法中的foo属性:

export default {
    data () {
        return {
            foo: 'bar'
        }
    },
    methods: {
        doSomething: _.throttle( () => {
            console.log(this.foo) // undefined
        },200)
    },
    created () {
        this.doSomething()
    }
}

我尝试过这样的事情:

const self = {
    ...
    methods: {
        doSomething: _.throttle( () => {
            console.log(self.foo) 
        },200)
    },
    ...
}

export default self

没有成功

如何在VueJS方法上使用lodash throttled方法,并使用this上下文?

1 个答案:

答案 0 :(得分:27)

您正在使用箭头功能,该功能会绑定错误的上下文(this)。你应该使用普通的function

    doSomething: _.throttle( function () {
        console.log('olas', this.foo);
    },200)