Понимание образца Canjs Control

Смотрю на образец Canjs для контроля.

TaskStriker = can.Control({
    "{task} completed": function(){
        this.update();
    },
    update: function(){
        if ( this.options.task.completed ) {
            this.element.addClass( 'strike' );
        } else {
            this.element.removeClass( 'strike' );
        }
    }
});
var taskstriker = new TaskStriker({ 
    task: new Task({ completed: 'true' }) 
});

В этом случае, что именно является объектом задачи? Я пытался создать задачу с помощью can.Construct, но она не вызывает функцию обновления при изменении значения.

Может кто-нибудь объяснить, пожалуйста, немного об этом?

2 ответа

Решение

can.Construct не реализует наблюдаемые свойства.

Объектом задачи будет can.Map ( http://canjs.com/docs/can.Map.html) или can.Model ( http://canjs.com/docs/can.Model.html). С этими двумя вы можете наблюдать изменения на объекте и, таким образом, запускать код обновления.

Несколько вещей выделяются: (1) Ваш объект задачи имеет completed установить до taskstriker инициализируется; и (2) для создания экземпляра can.Control или одного из его подклассов необходимо передать элемент DOM в качестве первого аргумента и объект параметров в качестве второго.

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