我试图在我的VueJS应用程序中限制一个方法.我首先尝试了以下内容:
export default {
data () {
return {
foo: 'bar'
}
},
methods: {
doSomething () {
console.log('olas')
}
},
created () {
_.throttle(this.doSomething,200)
}
}
Run Code Online (Sandbox Code Playgroud)
但该doSomething
方法没有被解雇:https://jsfiddle.net/z4peade0/
然后,我尝试了这个:
export default {
data () {
return {
foo: 'bar'
}
},
methods: {
doSomething: _.throttle( () => {
console.log('olas')
},200)
},
created () {
this.doSomething()
}
}
Run Code Online (Sandbox Code Playgroud)
函数被触发:https://jsfiddle.net/z4peade0/1/
问题是,我无法访问foo
限制方法内的属性:
export default {
data () {
return {
foo: 'bar'
}
},
methods: {
doSomething: _.throttle( () => {
console.log(this.foo) // undefined
},200)
},
created () {
this.doSomething()
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情:
const self = {
...
methods: {
doSomething: _.throttle( () => {
console.log(self.foo)
},200)
},
...
}
export default self
Run Code Online (Sandbox Code Playgroud)
没有成功
我如何在VueJS方法上使用lodash throttled方法,并使用this
上下文?
Roy*_*y J 31
你正在使用一个箭头函数,它绑定了错误的上下文(this
).你应该使用普通的function
:
doSomething: _.throttle( function () {
console.log('olas', this.foo);
},200)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4284 次 |
最近记录: |