Как использовать функцию debounce с методом представления модели CanJS DefineMap?
Я пытаюсь использовать Лодаш _.debounce
функция для canjs
DefineMap
метод представления модели, но кажется, что this
сложно даже я пытался сделать это в init
метод, но без успеха:
export const ViewModel = DefineMap.extend({
init() {
this.myMethod = _.debounce(this.myMethod, 200)
},
myMethod() {
// cool stuff here
}
})
Любая помощь приветствуется!
1 ответ
Решение
Потому что 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