我正在尝试对_.debounce
canjs
视图模型方法使用lodash 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