如何在 CanJS DefineMap 视图模型方法中使用去抖功能?
How to use debounce function with CanJS DefineMap view-model method?
我正在尝试将 lodash _.debounce
函数用于 canjs
DefineMap
视图模型方法,但即使我尝试这样做,this
似乎也很棘手在 init
方法中但没有成功:
export const ViewModel = DefineMap.extend({
init() {
this.myMethod = _.debounce(this.myMethod, 200)
},
myMethod() {
// cool stuff here
}
})
感谢任何帮助!
因为默认情况下 DefineMap 是密封的,并且您可能希望针对 ViewModel
的各个实例进行独立节流,您希望这样做:
var time = new Date();
var ViewModel = can.DefineMap.extend({
id: "number",
myMethod: {
type: "any",
default(){
var fn = _.debounce(function(){
console.log(this.id+" says Hi at "+(new Date() - time))
},100);
return fn;
}
}
});
这基本上将 myMethod
属性 设置为去抖功能。你可以在这里看到它的实际效果:http://jsbin.com/nekelak/edit?html,js,console
我正在尝试将 lodash _.debounce
函数用于 canjs
DefineMap
视图模型方法,但即使我尝试这样做,this
似乎也很棘手在 init
方法中但没有成功:
export const ViewModel = DefineMap.extend({
init() {
this.myMethod = _.debounce(this.myMethod, 200)
},
myMethod() {
// cool stuff here
}
})
感谢任何帮助!
因为默认情况下 DefineMap 是密封的,并且您可能希望针对 ViewModel
的各个实例进行独立节流,您希望这样做:
var time = new Date();
var ViewModel = can.DefineMap.extend({
id: "number",
myMethod: {
type: "any",
default(){
var fn = _.debounce(function(){
console.log(this.id+" says Hi at "+(new Date() - time))
},100);
return fn;
}
}
});
这基本上将 myMethod
属性 设置为去抖功能。你可以在这里看到它的实际效果:http://jsbin.com/nekelak/edit?html,js,console