Как использовать функцию debounce с методом представления модели CanJS DefineMap?

Я пытаюсь использовать Лодаш _.debounce функция для canjsDefineMap метод представления модели, но кажется, что 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

Другие вопросы по тегам